Facebook JS SDK返回'未知'期待' not_authorized'

时间:2015-06-18 20:43:00

标签: javascript facebook

我在检测用户使用FB进行身份验证时遇到问题,但之后点击了取消'当被要求获得许可时。

发生了什么:

1)应用程序加载并检查登录状态...用户未知'。大。

2)用户点击"登录"调用FB.login()的按钮,具有生日和地址的权限。用户将显示FB登录对话框,输入其凭据,然后进入权限对话框。

3)他们决定取消。对话框关闭并返回“未知”状态。

4)我刷新页面,状态检查再次运行,用户现在没有被授权'。

我假设这意味着第2步的登录部分成功,因为现在我甚至可以打开另一个选项卡到FB并且用户已登录。这是有道理的,因为用户能够登录并看到权限对话框,但当他们取消时,为什么他们仍然未知'实际上,当时他们 知道FB

我尝试添加另一个getLoginStatus,如下所示:

var login = function(){
    console.log('logging in user via FB...');
    var dfr = $q.defer();
    FB.login(function(response){

        if(response.status == 'connected'){
            console.log('    user is connected');
        }

        if(response.status == 'not_authorized'){
            console.log('    user is not authorized');
        }

        if(response.status == 'unknown'){
            console.log('    user is unknown');

            // if user is unknown, check that they REALLY are unknown
            FB.getLoginStatus(function(response){
                console.log('status response', response);
            });
        }

        status.fbUser = response.status;
        dfr.resolve(response);
    },{
        scope: 'email,public_profile,user_birthday',
        return_scopes: true
    });
    return dfr.promise;
};

...但这只能告诉我FB仍声称不了解用户。当你刷新页面时,BAM!初始登录检查表明用户未被授权。就像孩子长大成人时失去特殊性一样,用户什么时候从未知到未知?

我打算将用户重定向到权限说明页面或注册页面或其他内容,但前提是他们从登录过程返回为“未授权”。至少这告诉我FB知道这个人,但是他们没有用他们的帐户授权我的应用程序,所以我可以单独处理那个完全未知的人。

如何让它返回' not_authorized'无需刷新页面?从FB的角度来看,用户是不知道的'或者' not_authorized'在步骤2和3之间的点?

This answer对另一个SO问题让我考虑订阅FB事件以检测到这种变化,但我会认为关闭对话框,额外的getLoginStatus()和任何事件都会说同样的事情这点。我必须尝试并报告。

This post已关闭,但会与两个用户进行交易,新用户将替换为旧用户。我只谈论一个正在改变状态的用户。

This post也很接近,但修复程序尚未获得授权。我正在谈论在登录过程中部分连接(即未授权)的未知用户,无需刷新页面。

还有一些帖子,但我希望这与我已经阅读的内容有所区别。

0 个答案:

没有答案