我正在使用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”。因为如果出现这个问题我的应用程序根本不会继续。 这样做的最佳方式是什么?
答案 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;
});
}