Android 一键发布 Facebook 帖文

一般遇到的需求都是做分享操作,现在国内已经有很多一键分享的 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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容