Android 一键发布 Facebook 帖文

作者: 我说的这句话是谎话 | 来源:发表于2016-12-28 14:28 被阅读295次

    一般遇到的需求都是做分享操作,现在国内已经有很多一键分享的 SDK了,而且还封装得不错,就是权限要得比较多。
    今天需要做的是 跟 Path APP 一样,在自己的 APP 发布post时,同步发送到 其他平台Facebook。
    先把基本配置做了

    Facebook Android SDK 新增至您的行動開發環境

    取得正確設定並連結至 Android 應用程式的 Facebook 應用程式編號。請參閱 Android 新手指南,新增 Facebook 應用程式編號

    產生 Android 金鑰雜湊並新增至開發人員個人檔案

    新增 Facebook Activity - 請將本項目加至 `AndroidManifest.xml

    开始分享
    建立内容模板
    模板有几种方式

    • Link

    • Photos

    • Videos

    • Multimedia

    参见Facebook官方文档
    最终使用

    ShareApi.share(content, null);
    

    即可发送成功
    但是发送的样式 跟 使用那些 一键分享的 SDK 是一样的
    都是那种感觉像 转发 的形式。(会看到 发送的对话框,类似于 ShareDialog)

    后台发送
    仔细看了文档,发现了一个 Graph API
    而且还提供了 案例,也有各个平台的SDK使用,用起来很方便。

    Are two people Facebook friends? (判断两人是否为朋友)

    Publishing new Status Updates (发布新的近况)

    Sharing Links (分享链接)

    等等......具体参见文档

    权限申请
    根据需求写了一个方法,用于发布 文字近况 和 图片近况

    public static void share2FBInBackground(String img_url, String des) {

       if(TextUtils.isEmpty(img_url)) {
           if(!TextUtils.isEmpty(des)) {
               Bundle params = new Bundle();
               params.putString("message", des);
               /* make the API call */
               new GraphRequest(
                       AccessToken.getCurrentAccessToken(),
                       "/me/feed",
                       params,
                       HttpMethod.POST,
                       new GraphRequest.Callback() {
                           public void onCompleted(GraphResponse response) {
                               DebugUtils.LOG_D(TAG, "post text complete");
                               /* handle the result */
                           }
                       }
               ).executeAsync();
           }
       } else {
           Bundle params = new Bundle();
           params.putString("url", img_url);
           if(!TextUtils.isEmpty(des)) {
               params.putString("caption", des);
           }
           /* make the API call */
           new GraphRequest(
                   AccessToken.getCurrentAccessToken(),
                   "/me/photos",
                   params,
                   HttpMethod.POST,
                   new GraphRequest.Callback() {
                       public void onCompleted(GraphResponse response) {
                       /* handle the result */
                           DebugUtils.LOG_D(TAG, "post photos complete");
                       }
                   }
           ).executeAsync();
       }
    

    }

    可是
    每次都不成功!
    原来 Facebook 发布还需要权限,还需要申请(publish_actions)
    那就在 发布之前 加一个 判断吧
    是否有权限发布

    
    public static boolean hasPublishPermission() {
       AccessToken accessToken = AccessToken.getCurrentAccessToken();
       return accessToken != null && accessToken.getPermissions().contains("publish_actions");
    }
    
    

    那,怎么申请权限呢?

    public static void loginWithPublishPermission(Activity activity, final    FacebookCallback<LoginResult> callback) {
    
           // 允许使用的权限
           String permission[] = new String[]{"publish_actions"};
           LoginManager.getInstance().logInWithPublishPermissions(activity, Arrays.asList(permission));
           LoginManager.getInstance().registerCallback(mCallbackManager, callback);
       }
    

    做了做些操作,应该可以发布成功了。
    但是, publish_actions
    这个权限是需要申请并审核的。
    那就去申请好了。
    进入 开发者账号--选中应用--选择 App-Review --选择 Submit Items for Approval--添加 需要的权限
    然后 Edit Notes 看下 审核需要做哪些事情。
    可严格了

    My app does not auto-populate the user message field

    My app does not use the Facebook Feed Dialog or the Facebook Share Dialog to publish content

    The share button has clear Facebook branding

    My app does not post to Facebook automatically

    还要录制一个视频

    You must show:

    1. How a person starts your app and logs in to Facebook login
    1. How a person shares to Facebook from your app
    1. How the post looks on the person's Facebook timeline after posting

    比写代码还麻烦。
    还有一个问题,我想测试我写的代码是否能发布出去呢,现在权限还没有申请下来。
    没关系,facebook 提供了一个 测试账号(需要自己添加)
    左侧边栏--Roles--Test Users
    然后使用新增的用户,用刚才的代码,就可以进行发布测试了。
    流水帐式记录。Done.
    已发布到 jimbray

    相关文章

      网友评论

        本文标题:Android 一键发布 Facebook 帖文

        本文链接:https://www.haomeiwen.com/subject/gluyvttx.html