我有一个工作的Facebook应用程序,大多数用户只会使用一次。通过Facebook工作流程,用户可以指示他们是否希望自己的墙壁被写入。基于此,我要么要求获得publish_stream权限。
稍后,一小部分用户会回来再次使用该应用。以前不想写在墙上的一些人(因此我没有要求发布流)现在想写在他们的墙上。
在用户授权应用后,如何申请其他权限?
同样,我如何查询用户列出他们已授予的权限?
答案 0 :(得分:19)
就像向新fb:login-button
添加新权限一样简单:
<fb:login-button scope="publish_stream">
Let me write on your wall!
</fb:login-button>
例如,您在DIV中隐藏了上述内容,如果用户勾选了一个复选框,则会显示DIV并提示新的权限!
好的直播示例位于Facebook Test Console:
examples
fb.api
下选择does-like
现在您可以看到即使在连接到应用程序(测试控制台应用程序)之后, 实际上还有另一个登录按钮来提示用户!
修改强>
要检查用户是否已授予您的应用程序权限,只需使用此FQL:
SELECT read_stream,offline_access FROM permissions WHERE uid=me()
这将返回如下内容:
[
{
"read_stream": 1,
"offline_access": 0
}
]
要测试它,只需使用早期发布的测试控制台。
编辑2:
要在没有XFBML或Javascript的情况下自己构建链接,您只需要添加scope
参数以及其他权限(reference):
https://www.facebook.com/dialog/oauth?
client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=publish_stream
或者如果您使用的是PHP-SDK:
$loginUrl = $facebook->getLoginUrl(array(
"scope" => "publish_stream"
));
答案 1 :(得分:0)
前几天我正在看这个!如果您通读http://developers.facebook.com/docs/authentication,有几种不同的方式可以显示一个小弹出框来请求额外的权限。
我不确定它如何与Facebook App一起使用,但我知道在使用Facebook Connect的网站上,如果您尝试请求用户已经接受的权限,那么该页面会自动重定向回redirect_url你设定的。