在auth.authResponseChange事件中处理response.status的问题

时间:2013-06-07 10:23:28

标签: facebook facebook-javascript-sdk facebook-login facebook-authentication xfbml

我想创建一个也可以使用FB登录的登录系统。所以我在我的页面中设置了FB对象和SDK,然后订阅了auth.authResponseChange事件,并添加了一个匿名函数,如果我已经记录,没有记录或没有授权,那么就做了。

当我登录时,它可以正常工作。当我没有登录或未被授权时,它什么都不做。我认为它也不会进入匿名函数,因为我在if之前放了一个console.log()而它什么也没做。

这是我的代码:

// Facebook stuff
window.fbAsyncInit = function()
{
  FB.init({
    appId      : 'my id blabla', // App ID
    channelUrl : 'my channel.html bla bla', // Channel File
    status     : true, // check login status
    cookie     : true, // enable cookies to allow the server to access the session
    xfbml      : true  // parse XFBML
  });

  FB.Event.subscribe('auth.authResponseChange', function(response)
  {
    console.log("Running function");

    if(response.status === "connected")
    {
        console.log("Connected and authorized");
    }
    else if (response.status === 'not_authorized')
    {
        console.log("Not authorized");
    }
    else
    {
        console.log("Not connected");
    }
  });
};

// Load the SDK asynchronously
(function(d)
{
   var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
   if (d.getElementById(id)) {return;}
   js = d.createElement('script'); js.id = id; js.async = true;
   js.src = "//connect.facebook.net/en_US/all.js";
   ref.parentNode.insertBefore(js, ref);
}(document));

1 个答案:

答案 0 :(得分:0)

我有同样的问题,但是如果您订阅事件'auth.statusChange'而不是'authResponseChange',那么你可以知道他是否已经'连接'到Facebook并授权你的应用程序或者他是否已连接到fb但未经授权。

此外,如果你使用facebook建议不要使用的FB.getLoginStatus,你可以知道用户所处的三种状态(connected,not_autorized或not_connected)中的哪一种。