FB.getLoginStatus在点火前需要页面刷新

时间:2011-11-09 21:15:51

标签: javascript facebook sdk

我有一个Facebook页面选项卡应用程序,直到刷新页面后才能正确加载。我一直试图解决这个问题超过一个星期,我的智慧结束了。

以下是代码:



    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script src="https:////connect.facebook.net/en_US/all.js"></script>
    <div id="fb-root"></div>
    <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId      : '***************', // App ID
          channelURL : '//www.********.com/**********/channel.html', // Channel File
          status     : true, // check login status
          cookie     : true, // enable cookies to allow the server to access the session
          oauth      : true, // enable OAuth 2.0
          xfbml      : true  // parse XFBML
        });

        // Additional initialization code here
      };

      // Load the SDK Asynchronously
      (function(d){
         var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
         js = d.createElement('script'); js.id = id; js.async = true;
         js.src = "//connect.facebook.net/en_US/all.js";
         d.getElementsByTagName('head')[0].appendChild(js);
       }(document));
    </script>
    <script type="text/javascript">
    $(document).ready(function(){
        FB.getLoginStatus(function(response) {
            if (response.status === 'connected') {
                //User Logged In
            }
            else if (response.status === 'not_authorized') {
                //Log User Into App
            }
            else
            {
                top.location = "http://www.facebook.com";
            }
        });
    });
    </script>

就像我说的那样,如果在alert("Test")之后立即添加类似FB.getLoginStatus(function(response) {的内容,则会在第一页加载时弹出,但会在页面刷新后弹出。

有人可以帮助我指出正确的方向吗?

谢谢, 佛瑞德

2 个答案:

答案 0 :(得分:2)

首先,您要同步和异步加载SDK。删除同步线。然后你所有的FB相关行应该在window.fbAsyncInit中。在sdk完全加载之前,您无法订阅事件。

答案 1 :(得分:1)

如果您还没有

,可以这样试试
FB.getLoginStatus(function(response) {
  if (response.authResponse) {
   // logged in and connected user, someone you know
  } else {
    // no user session available, someone you dont know
  }
});