FB.getLoginStatus已停止工作了吗?

时间:2017-03-02 21:37:04

标签: javascript facebook

我们有几个Facebook应用程序已经工作了很多年。非常简单的画布应用。最近,我们决定要进行一些应用程序更改,因此我尝试安装测试版本,以便我可以开始探索。

但出于某种原因,我被拒绝了。在我的应用程序启动时,此Javascript正在运行:

    (function(d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) return;
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

    // Load the Facebook SDK asynchronously
    window.fbAsyncInit = function() {
        FB.init({
            appId      : appId,   // MY APP ID
            cookie     : true,    // enable cookies to allow the server to access the session
            xfbml      : true,    // parse social plugins on this page
            version    : 'v2.8'   // set default SDK version
        });

        FB.getLoginStatus(function(response) {
            handleLoginStatusChange(response); 
        });
    };

但是对getLoginStatus的调用始终返回并反对:

authResponse: undefined
status: "undefined"

好吧,我认为这是一个流程问题...它曾经有用,但现在......

无论如何,该应用程序执行此操作:

a)初始化facebook API

b)调用FB.getLoginStatus来确定身份验证状态

c)如果该返回"未经授权",我会设置登录屏幕

d)如果返回"已连接",我正在进行图形调用

e)如果返回" unknown",我只是打印错误。 (我在FB页面上使用了FB.getLoginStatus的例子。)

我已修复" e)"这样它就会在那种情况下提出登录页面,并进一步深入到杂草中。我的登录函数调用FB.login,然后再次进入处理程序,这将获得" connected"状态。这会进行图形调用以获取有关帐户页面的信息,然后重定向到我的(PHP,顺便说一下)应用程序中的另一个页面,让用户将我的应用程序附加到他/她想要的任何页面。但是,这个重定向 - 处理访问令牌(必要时更新),然后重新开始。初始化FB API,并调用getLoginStatus。即使我刚刚完成了登录程序,也会再次返回未知状态。

???这是有效的,我们已经在近500个Facebook帐户上安装了应用程序,并且目前正在使用,我甚至在今天看到了点击。

不确定我在这里失踪了什么。

1 个答案:

答案 0 :(得分:0)

您似乎需要登录:

var permissions = 'public_profile, email, user_friends';
FB.login(null,{scope:permissions});

此外,在检查登录状态之前,请订阅authResponse:

FB.Event.subscribe('auth.authResponseChange', yourCallback);