【问题标题】:android sending facebook token to server and publishing to feedandroid将facebook令牌发送到服务器并发布到feed
【发布时间】:2014-09-17 06:40:52
【问题描述】:

在我的应用程序中,我要求用户通过 facebook 登录,然后我将接收到的令牌发送到服务器,从我要发布到用户时间线的位置。

我使用 sromku 简单的 facebook 包装器。我请求这些权限:

Permission[] permissions = new Permission[] {
    Permission.USER_PHOTOS,
    Permission.EMAIL, Permission.PUBLISH_ACTION,
    Permission.PUBLIC_PROFILE, Permission.READ_FRIENDLISTS,
    Permission.USER_ABOUT_ME
};

问题是,如果我从 android 应用程序向用户发布 Feed 对象,它会毫无问题地发布,但是当我尝试从服务器执行相同操作时,我得到:

(#200) The user hasn't authorized the application to perform this action'

如果我为我的令牌请求可用权限,我会得到:

installed [status] => granted
public_profile [status] => granted
email [status] => granted
read_friendlists [status] => granted
user_activities [status] => granted
user_photos [status] => granted
user_about_me [status] => granted

没有 publish_actions 和 publish_stream(在我知道的简单 facebook 中没有选项可以问这个问题)。

也许有人可以帮我找出问题所在?

[编辑] 在列出从原始 facebook 会话(使用:simpleFacebook.getSession().getPermissions())对象检索到的权限后,我看到:

Permission: public_profile
Permission: email
Permission: contact_email
Permission: read_friendlists
Permission: user_activities
Permission: user_photos
Permission: user_about_me

这真的很奇怪,因为它没有列出我的 publish_actions 权限,但仍然成功发布到我的提要。

【问题讨论】:

    标签: android facebook android-simple-facebook


    【解决方案1】:

    根据https://github.com/sromku/android-simple-facebook/blob/master/Simple%20Facebook/src/com/sromku/simple/fb/Permission.java#L46,应该可以请求PUBLISH_ACTION 权限,正如您在代码中已有的那样。

    我猜您没有使用您应用的管理员/测试人员/开发人员用户?!然后您必须先通过 Facebook 应用审核,然后才能请求扩展权限,如 https://developers.facebook.com/docs/apps/review/login#do-you-need-review 中所述

    【讨论】:

    • 我被添加为测试人员。并且确实请求了 PUBLISH_ACTION。
    【解决方案2】:

    我用的是这个方法:

    publish(feed, true, new OnPublishListener() {});
    

    它会打开 webview 对话框,所以我实际上是在 facebook 上发帖,这就是我不需要许可的原因。当我改为:

    publish(feed, new OnPublishListener() {});
    

    我有一个对话框,我必须接受发布许可。之后,我可以从服务器上用我的令牌在 facebook 上发布。

    这里的问题是,我认为如果我在创建 SimpleFacebook 对象之前指定所有权限,然后调用登录方法,我将获得所有权限。但这仅适用于读取权限。要获得发布权限,您必须在登录后显式调用 requestNewPermissions 方法,以获得所需的发布权限。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-08
      • 2011-11-20
      • 2014-07-24
      • 2020-12-14
      • 1970-01-01
      • 2015-02-10
      • 2020-08-03
      • 2016-11-23
      相关资源
      最近更新 更多