FacebookJSSDK:有没有办法确定用户是否未接受权限?
假设我要求用户访问他们的基本公共配置文件信息和朋友列表(默认项)。这将弹出一个弹出窗口(接受/取消)。此外,我要求访问他们管理的粉丝页面。目前在Facebook上,这将弹出第二个弹出窗口,用户可以单击FacebookJSSDK:有没有办法确定用户是否未接受权限?,facebook,facebook-javascript-sdk,Facebook,Facebook Javascript Sdk,假设我要求用户访问他们的基本公共配置文件信息和朋友列表(默认项)。这将弹出一个弹出窗口(接受/取消)。此外,我要求访问他们管理的粉丝页面。目前在Facebook上,这将弹出第二个弹出窗口,用户可以单击跳过 如果用户接受第一个弹出窗口,但在第二个弹出窗口(管理页面one)上单击跳过,我想弹出一条消息,要求他们重新考虑他们的决定,并解释为什么此权限很重要 有没有办法确定用户已接受第一个权限,但未接受第二个权限 FB.login(function(response) { if(respons
跳过
如果用户接受第一个弹出窗口,但在第二个弹出窗口(管理页面one)上单击跳过,我想弹出一条消息,要求他们重新考虑他们的决定,并解释为什么此权限很重要
有没有办法确定用户已接受第一个权限,但未接受第二个权限
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'});
来自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'});
您可以使用用户的访问令牌检索该信息。Facebook支持调试访问令牌。您可以通过向
debug_令牌
连接发出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
}
}
如您所见,输出包含有关与访问令牌关联的权限的信息。您可以阅读范围部分,以验证用户是否接受任何扩展权限。您可以在参考资料中获得更多信息。答案有用吗?你设法解决了这个问题吗?