在我的应用程序中,我要求用户通过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方法,以获得所需的发布权限。