所以,我有一个应用程序,允许用户参加比赛,然后我想把他们的参赛记录发布到他们的时间线上。
因此,我请求权限如下:
$loginParams = array(
'scope' => 'publish_actions',
'redirect_uri' => $facebookSettings['redirectUri']
);
这是从我最初拥有的权限精简而来的:
...'scope' => 'read_stream, user_photos, photo_upload' ....
但在访问该页面时,Facebook仍然会弹出两次权限对话框。第一次甚至不准确,而且似乎导致了很多下降,因为人们不会超过这一点。
第一条消息是:
XXXXXX would like to access your public profile and friend list.
其次,是我真正追求的:
XXXXX would like to post to your friends on your behalf.
有人能帮我解释为什么,这是预期的行为,还是我做错了什么?
谢谢!
这不是一个bug,但这是经过设计的,第一个对话框由读取权限组成,如果您请求了publish_actions
或publish_stream
,则会出现第二个提示,要求用户提供写入权限。引用权限文档
此外,发布权限(如publish_actions或publish_stream)将在"登录"对话框中提示第二步,这可能会减少登录人数。
此外,作为一种最佳实践,您应该只在需要时请求写入或发布权限。引用权限文档,
应用程序应将读取权限和发布权限的请求分开。计划你的应用程序时,先在初次登录时请求最低限度的读取权限,然后在用户实际需要时请求任何发布权限,例如,当他们想在应用程序中创建Open Graph故事时。这提供了最佳的用户体验并优化了转换。
您的应用程序所需的个人权限;第二个是扩展权限,您的应用程序可以使用它来获得更丰富的体验,但对应用程序的功能并不重要。