【问题标题】:Javascript: How to detect facebook connection timed out errorJavascript:如何检测 facebook 连接超时错误
【发布时间】:2014-09-08 16:52:47
【问题描述】:

我在带有 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”。因为如果发生此问题,我的应用程序将无法继续。 最好的方法是什么?

【问题讨论】:

  • 不,这不是我要问的。我在问是否有任何方法可以检测到我的应用程序无法与 facebook 的服务器连接,即以防万一由于网络故障或类似原因。就像 gmail 显示的“试图连接等等等等。”

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


【解决方案1】:

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

在尝试连接一些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;

    });
}

【讨论】:

    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多