2014-09-26 4 views
0

Я хотел бы выйти из системы с моего сайта и FB.Функция JQuery и Facebook API приоритет/приоритет

First preventDefault (предотвратить отправку формы), затем getLoginStatus (требуется токен доступа FB), затем вызовите FB.logout и, наконец, отправьте форму выхода на мою страницу.

$("logout-button").click(function (event) { 
    event.preventDefault(); 
    FB.getLoginStatus(function (response) { 
     if (response && !responce.error) { 
      if (response.status === "connected") { 
       FB.logout(); 
      } 
     } 
    }); 
    $("logout-form").submit(); 
}); 

Проблема в том, что подача имеет приоритет, а FB.logout() никогда не вызывается.

Любое предложение о том, как сделать этот скрипт, всегда выполнять FB.getLoginStatus, прежде всего, ждать функции exe и, наконец, вызвать submit?

ответ

1

FB.getLoginStatus должны привыкают при загрузке страницы, так что вы можете просто хранить идентификатор пользователя в переменной - чтобы проверить, если пользователь вошел в систему:

var userID; 
FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     userID = response.authResponse.userID; 
    } 
}); 

.... и затем:

$("logout-button").click(function (event) { 
    event.preventDefault(); 
    if (userID) { 
     FB.logout(); 
    } 
    $("logout-form").submit(); 
}); 

Только моя непроверенная идея, но она должна работать. Вы всегда должны вызывать FB.logout и FB.login при взаимодействии с пользователем - прямо сейчас вы вызываете его в асинхронной функции обратного вызова FB.getLoginStatus.

+0

Проблема не в доступе. Скажем, мы забываем про токен доступа, и у нас есть это -> $ («logout-button»). Click (function (event) {event.preventDefault(); FB.logout(); $ ("logout-form") .Отправить();}); Проблема в том, что submit идет первым, а FB.logout() - вторым. Как мой вопрос название предлагает - приоритет функции. – Georgi

+0

Я вообще не упоминал accessToken, вам не нужно беспокоиться о токене при использовании js sdk (в большинстве случаев). – luschn

+0

Я добавил дополнительную информацию в свой ответ. я точно знаю, что вы пытаетесь сделать, не беспокойтесь :) – luschn