Мне нужно позвонить FB.logout()
и выйти из приложения сразу. Чтобы выйти из приложения, необходимо нажать DELETE /signout
, который происходит после нажатия #sign_out_btn
. Я привязал событие onclick к кнопке, чтобы позвонить FB.logout()
, прежде чем это произойдет.wait for FB.logout() в событии onclick
Моя первая попытка:
$('#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;
});
Он работает, но на самом деле это не похоже на умное решение. Любые лучшие идеи?