0

在我的一个应用程序中,我使用客户端 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...

};

任何想法?

4

2 回答 2

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>

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

于 2011-05-01T09:00:22.240 回答
0

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

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

于 2012-09-19T09:27:22.547 回答