我需要调用FB.logout()
并立即退出应用程序。要从应用退出,需要点击DELETE /signout
后点击#sign_out_btn
。我将onclick事件绑定到按钮以在FB.logout()
发生之前调用它。
我的第一次尝试:
$('#sign_out_btn').click(function(e) {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
FB.logout(function(response){
return true;
});
} else {
return true;
});
});
无效,因为FB.logout()
被异步调用,应用程序继续执行DELETE /signout
调用和重定向,因此永远不会进行FB.logout()
调用。
我提出了一种解决方法,在该方法中,我阻止在按钮点击时对服务器进行原始调用,然后在DELETE
回调中使用ajax
进行logout
请求,然后手动重定向页面:
$('#sign_out_btn').click(function(e) {
e.preventDefault();
FB.getLoginStatus(function(response) {
if (response.status == 'connected') {
FB.logout(function(response) {
$.ajax({
url: '/signout',
type: 'DELETE',
success: function(result) {
return window.location = '/';
}
});
});
}
});
return false;
});
它有效,但它似乎并不是一个聪明的解决方案。有更好的想法吗?
答案 0 :(得分:0)
这是一个合法的解决方案imho。为了避免“回调地狱”,你也可以使用Promises。以下是一些有用的资源:
顺便说一句,我只会在页面加载时使用FB.getLoginStatus
,并在用户登录时存储信息。您可以通过这种方式在注销过程中保存API调用。