Javascript FB.getLoginStatus需要在启动前刷新页面

Javascript FB.getLoginStatus需要在启动前刷新页面,javascript,facebook,sdk,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"&

我有一个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>


window.fbAsyninit=函数(){
FB.init({
appId:“****************”,//应用程序ID
channelURL:'//www.*********.com/************/channel.html',//频道文件
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
oauth:true,//启用oauth 2.0
xfbml:true//解析xfbml
});
//这里有额外的初始化代码
};
//异步加载SDK
(职能(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);
}(文件);
$(文档).ready(函数(){
FB.getLoginStatus(函数(响应){
如果(response.status===“已连接”){
//用户登录
}
else if(response.status===“未授权”){
//将用户登录到应用程序
}
其他的
{
top.location=”http://www.facebook.com";
}
});
});
就像我说的,如果在
FB.getLoginStatus(函数(响应){
之后立即添加类似
alert(“Test”)
的内容,它不会在第一次页面加载时弹出,而是在页面刷新后弹出

有人能帮我指出正确的方向吗

谢谢,
弗雷德

如果你还没有试过,你可以这样做

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

首先,您正在同步和异步加载SDK。请删除同步行。然后,所有与FB相关的行都应位于window.fbAsyninit中。在SDK完全加载之前,您不能订阅事件。

您是否尝试在window.load而不是document.ready上执行此操作?我尝试了window.ready和document.ready,两者都有相同的结果。但无论哪种方式都可以正常启动,只是FB.getLoginStatus没有启动。实际上,这可能是执行检查的更好方式,但是…与我的不同之处在于
if(response.authResponse)
在我重新加载页面之前它不会启动,因为
FB.getLoginStatus
在重新加载页面之后才会启动。如果你将FB.getLoginStatus移动到window.fbAsyncint内会怎么样呢?你是个救生员。非常感谢!没问题。很高兴能提供帮助。你想删除所有这些吗?
window.fbAsyncInit=function(){FB.init({appId:'**************',//App ID channelURL:'//www.*********.com/************/channel.html',//通道文件状态:true,//检查登录状态cookie:true,//启用cookie以允许服务器访问会话oauth:true,//启用oauth 2.0 xfbml:true//parse XFBML});//此处有其他初始化代码};