android将facebook令牌发送到服务器并发布到提要



在我的应用程序中,我要求用户通过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中没有问这个问题的选项)。

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

[EDIT]在列出从原始facebookSession(带有: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权限,但仍然成功地发布到我的订阅源。

根据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-您需要查看

我使用的是这种方法:

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

它打开了网络视图对话框,所以我实际上是在脸书上发帖,这就是为什么我不需要许可。当我改为:

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

我有一个对话框,其中我必须接受发布权限。之后,我可以从服务器上用我的代币在脸书上发帖。

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

最新更新