假设我要求用户访问他们的基本公开个人资料信息和朋友列表(默认项目)。这会弹出一个弹出窗口(Accept / Cancel)。另外我要求访问他们管理的粉丝。目前在Facebook上,这将弹出一个SECOND弹出窗口,用户可以点击Skip
。
如果用户接受了第一个弹出窗口,但点击了第二个弹出窗口(manage_pages
),我想提出一条消息,要求他们重新考虑他们的决定,并解释为什么这个权限很重要。< / p>
有没有办法确定用户是否接受了第一个许可,而不是第二个许可?
FB.login(function(response) {
if(response.status === "connected"){
//First permission was accepted, but not necesserily 'manage_permissions'
} else {
//The entire popup was not accepted
}
}, {scope: 'manage_pages'});
答案 0 :(得分:0)
FB.login调用中的响应对象不包含此信息,因此您需要对/me/permissions
进行第二次API调用并查看对此的响应。
快速举例:
FB.login(function(loginResponse) {
if ('connected' == loginResponse.status) {
FB.api('/me/permissions', function(permissionResponse) {
if (!permissionResponse.data[0].manage_pages) {
console.log('user did not give app manage_pages permission');
} else {
console.log('user gave app manage_pages permission');
}
});
}
}, {scope: 'manage_pages'});
答案 1 :(得分:0)
您可以使用用户的访问令牌检索该信息。 Facebook为调试访问令牌提供支持。您可以通过向debug_token
连接发出GET请求来检索与特定用户的访问令牌相关的信息。类似的东西:
GET /debug_token?
input_token={input-token}&
access_token={access-token}
这将返回以下信息:
{
"data": {
"app_id": 000000000000000,
"application": "Social Cafe",
"expires_at": 1352419328,
"is_valid": true,
"issued_at": 1347235328,
"scopes": [
"email",
"publish_actions"
],
"user_id": 1207059
}
}
如您所见,输出包含有关与访问令牌关联的权限的信息。您可以阅读范围部分以验证用户是否已接受任何扩展权限。您可以在Getting Info about Tokens and Debugging参考中获得有关它的更多信息。