Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FacebookJSSDK:有没有办法确定用户是否未接受权限?_Facebook_Facebook Javascript Sdk - Fatal编程技术网

FacebookJSSDK:有没有办法确定用户是否未接受权限?

FacebookJSSDK:有没有办法确定用户是否未接受权限?,facebook,facebook-javascript-sdk,Facebook,Facebook Javascript Sdk,假设我要求用户访问他们的基本公共配置文件信息和朋友列表(默认项)。这将弹出一个弹出窗口(接受/取消)。此外,我要求访问他们管理的粉丝页面。目前在Facebook上,这将弹出第二个弹出窗口,用户可以单击跳过 如果用户接受第一个弹出窗口,但在第二个弹出窗口(管理页面one)上单击跳过,我想弹出一条消息,要求他们重新考虑他们的决定,并解释为什么此权限很重要 有没有办法确定用户已接受第一个权限,但未接受第二个权限 FB.login(function(response) { if(respons

假设我要求用户访问他们的基本公共配置文件信息和朋友列表(默认项)。这将弹出一个弹出窗口(接受/取消)。此外,我要求访问他们管理的粉丝页面。目前在Facebook上,这将弹出第二个弹出窗口,用户可以单击
跳过

如果用户接受第一个弹出窗口,但在第二个弹出窗口(管理页面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
        }
    }

如您所见,输出包含有关与访问令牌关联的权限的信息。您可以阅读范围部分,以验证用户是否接受任何扩展权限。您可以在参考资料中获得更多信息。

答案有用吗?你设法解决了这个问题吗?