检查用户的 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 API for iOS 中重新请求某些访问令牌