用户在 Facebook Auth Dialogue Javascript SDK 中跳过权限

Posted

技术标签:

【中文标题】用户在 Facebook Auth Dialogue Javascript SDK 中跳过权限【英文标题】:User Skips Permission in Facebook Auth Dialogue Javascript SDK 【发布时间】:2012-04-26 16:12:55 【问题描述】:

我在使用 facebook javascript sdk 的页面选项卡中有一个应用程序。当新用户使用该应用程序时,我会看到预期的“使用 facebook 登录”弹出窗口。我也有一些扩展权限,我已将其放入 FB.Login 的范围参数中。用户使用 facebook 登录后,我看到了预期的扩展权限弹出窗口。唯一的问题是如果用户跳过扩展权限,对话会返回一个 access_token,但它对扩展权限无效。下面的代码示例。

window.fbAsyncInit = function () 
    FB.Canvas.setAutoGrow();
    FB.init(
        appId: facebookAppId, 
        status: true, // check login status
    );

    function updateFBInfo(response) 
        console.log('updateResp:');
        if (response.authResponse) 
            //user is already logged in and connected
            FB.api('/me', function (info) 
                displayUserInfo(info, response);
            );
        
        else 
            FB.login(function (loginResponse) 
                if (loginResponse.authResponse) 
                    FB.api('/me', function (info) 
                        displayUserInfo(info, loginResponse);
                    );
                
            ,  scope: 'email,manage_pages,offline_access,publish_stream' );
        
    

    FB.getLoginStatus(updateFBInfo);
;

我想我的问题是,我错过了什么(这一定很简单),或者有没有办法检查返回的 acces_token 是否真的有效?

【问题讨论】:

【参考方案1】:

在继续之前,您需要明确检查权限。如果他们没有提供必要的权限,您需要再次显示具有必要范围的FB.login()

这是检查权限的代码:

FB.api('/me/permissions', function (response) 
            var perms = response.data[0];
            // Check for publish_stream permission in this case....
            if (perms.publish_stream)                 
                // User has permission
             else                 
                // User DOESN'T have permission. Perhaps ask for them again with FB.login?
                                                        
     );

【讨论】:

完美运行,感谢您的快速响应。我知道这很简单。 一种从这样的变量进行检查的方法?: var scope = 'user_friends,user_birthday,user_education_history' ? 您必须遍历每个值。例如。 var permValue = 'user_friends';if(permValue in perms) ...

以上是关于用户在 Facebook Auth Dialogue Javascript SDK 中跳过权限的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 facebook 的 python social auth 获取用户电子邮件并保存

在依赖 Auth0 进行 Facebook 身份验证的应用程序中选择用户 ID?

用户在 Facebook Auth Dialogue Javascript SDK 中跳过权限

无法使用 Parse 搜索新的 facebook auth 用户

Django Social Auth - 我无法重置通过Facebook签名的用户的密码

注销时flutter_facebook_auth插件未清除数据