2013-11-07 4 views
9

Полностью потерял на этом и docs действительно не дают никакого понимания по этому вопросу ...FB.logout(), вызываемый без токена доступа. Javascript SDK

Использование Facebook Javascript SDK в мое приложение с помощью этой кнопки Войти код:

<fb:login-button scope="manage_pages,read_insights,ads_management" autologoutlink="true" size="large"></fb:login-button> 

согласно документы, autologoutlink=true парам превращает login кнопку в log out после того, как пользователь вошел в систему. Я хочу сохранить эту функциональность, а не писать свой собственный код кнопки

Это событие с Падения FB.logout, но по-прежнему возвращает сообщение об ошибке в функции обратного вызова

FB.Event.subscribe('auth.logout', function(response) {            
    FB.logout(function(response) { 
     // FB.logout() called without an access token. 
    }); 
}); 

Я хотел бы использовать Facebook Войти виджет и не моя кнопка для входа в систему, так что другие ответы на эту же тему не помогают. Я не понимаю, как я должен пройти access_token, чтобы доказать, что я уполномочен выйти ...

+0

Я уверен, что кнопка logput обрабатывает сеанс пользователя из сам по себе, так что нет никакой необходимости для вас, чтобы позвонить 'FB.logout'. На самом деле, я думаю, что 'auth.logout' срабатывает, когда пользователь уже вышел из системы, и это объясняет, почему у вас нет действительного токена доступа, когда вы вызываете этот метод. Просто не называйте это вообще, и пусть кнопка выйдет из системы. – CBroe

+0

Вы правы в том, что он регистрирует зарегистрированного пользователя вне Facebook, но не вне сайта, поскольку access_token хранился в файле cookie. Я хотел вызвать FB.logout, чтобы очистить access_token. Это было подтверждено, когда я вошел в учетную запись, вытащил данные Графа, вышел из системы, вошел в систему как другой пользователь, и он все еще использовал предыдущий access_token и возвращал исходные данные API Graph. –

ответ

27

По-видимому, это невозможно, по крайней мере, я никак не могу понять. Быстрое решение вызвать эту функцию из пользовательских Log Out кнопки:

function fbLogoutUser() { 
    FB.getLoginStatus(function(response) { 
     if (response && response.status === 'connected') { 
      FB.logout(function(response) { 
       document.location.reload(); 
      }); 
     } 
    }); 
} 

страница перезарядка делает еще один запрос на Facebook, который затем видит несанкционированное состояние и удаляет куки из браузера, который, в свою очередь Аннулирует access_token. Таким образом, это выведет пользователя с сайта и из Facebook.

+0

глупый раствор, но отлично, спасибо. –

-1

попробовать это:

function fbLogoutUser() { 
FB.getLoginStatus(function(response) { 
    if (response && response.status === 'connected') { 

     FB.logout(function(response) { 
      document.location.reload(); 
     }); 
    } else if (response.status === 'not_authorized') 
     { 
      FB.logout(function(response) { 
      document.location.reload(); 
      }); 
     } 
});} 
Смежные вопросы