Javascript:如何检测facebook连接超时错误

时间:2014-09-08 16:52:47

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

我正在使用Javascript SDK在网站上使用Facebook登录。我们开始这样的事情:

window.fbAsyncInit = function() {

    FB.init({
      appId      : '{your-app-id}',
      xfbml      : true,
      version    : 'v2.0'
    });

    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);
    });

  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/en_US/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));

目前,我正在加载登录状态时显示加载动画;然后加载用户的页面。因此,如果Facebook工作,一切都按预期工作。但是如果fb无法访问,或连接错误,则连续显示加载动画但没有任何反应;在控制台中它显示连接超时错误。

所以,我想要做的就是在发生这种情况时检测这种情况,以便我可以显示消息“无法连接到Facebook”。因为如果出现这个问题我的应用程序根本不会继续。 这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

我刚刚找到了解决这种情况的方法。

在尝试连接timeout之后,如果仍然没有成功连接,则显示消息Can't connect with Facebook Server. Try Again?

var facebookConnectSuccess = false;

window.fbAsyncInit = function() {

  FB.init({
    appId      : '{your-app-id}',
    xfbml      : true,
    version    : 'v2.0'
  });

  checkFacebookLoginStatus();
};

//Check after 1 minute
var connectionTimeout = 60000;
setTimeout(function() {
    if(!facebookConnectSuccess) {
       var tryagain = confirm("Can't connect with Facebook Server. Try Again?");
       if(tryagain) {
          checkFacebookLoginStatus();
       }
    }
}, connectionTimeout);

function checkFacebookLoginStatus() {
    FB.getLoginStatus(function(response) {
      statusChangeCallback(response);

      facebookConnectSuccess = true;

    });
}