检查用户的 Facebook 权限并重新提示缺少权限

Posted

技术标签:

【中文标题】检查用户的 Facebook 权限并重新提示缺少权限【英文标题】:Check user's Facebook permissions and re-prompt for missing permission 【发布时间】:2014-04-15 15:03:15 【问题描述】:

我正在使用 ASP.net MVC 4 创建一个网站,我可以让用户使用他们的 facebook 帐户登录,问题是如果用户拒绝发布权限,我想检查他们的活动权限以及重新如有必要,我已经创建了这个脚本:

<script>

    document.getElementById('checkPerms').onclick = function () 
        checkPermissions();
    ;


    var checkPermissions = function () 
        FB.api('/me/permissions', function (response) 
            console.log(response);
        );
    ;


</script>

它应该返回活动权限,但我收到一个错误:必须使用活动访问令牌来查询有关当前用户的信息。

所以我无法检查用户的权限,我也不确定如何重定向到某个操作或如何重新提示这些权限。

【问题讨论】:

【参考方案1】:

这个错误:

必须使用活动访问令牌来查询有关当前用户的信息

仅表示当前会话中没有用户。所以,/me 会失败。你没有提到,所以我不确定你在哪里检查权限。但是您应该在用户处于会话状态时检查它们。

/me/permissions 通常用于检查发布权限,因为人们经常跳过这个权限。所以,就在发布之前,你打电话给这个并请求发布许可。

【讨论】:

感谢您的回复,它帮助我查看了 FB.init 并找到了解决方案!【参考方案2】:

我找到了解决方案,我必须保存 Facebook 令牌,然后从视图模型中检索它。

FB.init(
            appId: APPID,
            authResponse: 
                accessToken: '@Model.FacebookToken'
            
        );

在此之后,我必须检查权限是否存在;如果没有,那么我再次请求他们:

 var checkPermissions = function () 
        FB.api('/me/permissions', function (response) 
            var perms = response.data[0];
            // Check for publish_stream permission
            if (perms.publish_stream) 
                console.log('User has permission')
             else 
                FB.login(function (response) 
                    // Request permission
                ,  scope: 'publish_actions' );
            

        );
    ;

【讨论】:

您也可以将代码封装在对FB.getLoginStatus 的调用中,如果用户已授予访问权限,它将提供访问令牌。

以上是关于检查用户的 Facebook 权限并重新提示缺少权限的主要内容,如果未能解决你的问题,请参考以下文章

Swift:Facebook SDK,成功登录后检查丢失的权限

Facebook Graph API:提要中缺少帖子

iis部署sa登录失败

如何在 Facebook API for iOS 中重新请求某些访问令牌

如何在不提示用户提供 Facebook 权限的情况下在 iOS 应用程序中获取公共 Facebook 页面的提要?

Facebook Unity SDK 6.0 重新请求拒绝权限