FB.getSession()返回null

时间:2011-04-30 15:37:23

标签: firefox facebook facebook-javascript-sdk

在我的一个应用程序中,我使用客户端Facebook javascript api来跟踪用户的Facebook登录状态。

我已经让用户已经与Facebook应用程序连接,并且用户已登录到facebook。

现在当我调用FB.getSession()时,它返回null,在调用FB.getLoginStatus()时也没有给我response.session ....

这种行为在不同的浏览器中有所不同,它在chrome中运行良好但在firefox 4中运行不正常。我清除了Firefox中的cookie仍然没有按预期工作。

此客户端api是否受信任,或者我应该选择服务器端API?

window.fbAsyncInit = function() {
    FB.init({
        appId: '0000000000', 
        status: true, 
        cookie: true,
        xfbml: true
    });

    FB.getLoginStatus(function(response) {
      if (response.session) {
        // This block should have been called.
        alert('logged in')
      } else {
        // no user session available, someone you dont know
        alert('not logged in')
      }
    }, true);


    var session = FB.getSession(); //Must not return null...

};

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

使用非异步方法后,它工作正常。

<强>代码

<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
    appId  : '00000000000',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    xfbml  : true  // parse XFBML
});


$(function(){
    //var session = FB.getSession();

    alert(FB.getSession());
})

</script>

不知道为什么它不能用异步方法。

答案 1 :(得分:0)

这只是因为FB.getSession()没有初始化。

您无法向FB.getLoginStatus添加事件,该事件会在初始化Facebook时触发FB.getSession()功能,从而使用异步方法。