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

Javascript: How to detect facebook connection timed out error

本文关键字:facebook 连接 超时 错误 检测 何检测 Javascript      更新时间:2023-09-26

我使用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'));

目前,我正在显示加载动画,而登录状态正在加载;然后加载用户的页面。所以,如果脸书正常工作,一切都会如预期一样。但在fb不可访问或连接错误的情况下,加载动画会持续显示,但什么也没发生;在控制台中显示连接超时错误。

所以,我想做的就是在这种情况发生时检测到,这样我就可以显示消息"无法连接到facebook"。因为如果出现这个问题,我的应用程序将无法继续运行。最好的方法是什么?

我刚刚找到了摆脱这种情况的方法。

在尝试连接的某个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;
    });
}