我有一个可用的Facebook应用程序,大多数用户只会使用一次。通过Facebook工作流程,用户可以指出他们是否希望自己的墙被写入。基于此,我要么要求获得publish_stream权限。Facebook应用程序:其他权限
稍后,一小部分用户会回来并再次使用该应用。一些以前不想写信给墙壁的人(因此我没有要求发布publish_stream)现在想写信给他们的墙。
如何在用户已经授权应用程序后申请额外的权限?
同样,如何查询用户以列出他们已授予的权限?
我有一个可用的Facebook应用程序,大多数用户只会使用一次。通过Facebook工作流程,用户可以指出他们是否希望自己的墙被写入。基于此,我要么要求获得publish_stream权限。Facebook应用程序:其他权限
稍后,一小部分用户会回来并再次使用该应用。一些以前不想写信给墙壁的人(因此我没有要求发布publish_stream)现在想写信给他们的墙。
如何在用户已经授权应用程序后申请额外的权限?
同样,如何查询用户以列出他们已授予的权限?
这是因为添加了新的权限到一个新的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"
));
我前几天看着这个!如果您通过http://developers.facebook.com/docs/authentication阅读,有几种不同的方式显示一个小的弹出框来请求额外的权限。
我不确定这是如何与Facebook应用程序一起工作的,但是我知道在使用Facebook Connect的网站上,如果您尝试请求用户已经接受的权限,那么该页面会自动重定向回redirect_url你设置。
我看到您使用FBML生成登录按钮。什么时候使用PHP SDK和oauth_redirect方法?这就是它不尊重额外权限的地方。 –
@ScottC:更新了我的答案。 – ifaour