FB.logout не выходит из системы

Я реализовал вход на основе Facebook. FB.login работает отлично, а FB.logout — нет. Я пробовал с разными FB.init, удаляя куки, запуская страницу выхода несколько раз подряд, но единственный способ выйти из системы моего пользователя - это сам facebook.

Код, который я использую для выхода из системы:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>

  FB.init({
    appId: '***************',
    xfbml: true,
    status: true,
    cookie: true
  });

  FB.getLoginStatus();

  FB.logout();
</script>

Любые идеи? Спасибо


person Marco Gouveia    schedule 30.09.2012    source источник
comment
вам также нужно уничтожить сеанс в php, это можно сделать с помощью session_destroy();   -  person Database_Query    schedule 30.09.2012
comment
Спасибо. Вы знаете аналог asp?   -  person Marco Gouveia    schedule 01.10.2012
comment
Пробовал session_destroy() и session_unset() и все равно не работает :(   -  person Marco Gouveia    schedule 01.10.2012


Ответы (2)


вы пробовали, чтобы какое-то событие нажатия кнопки было FB.logout();

function logout(){
     FB.logout(function(response) {
        // user is now logged out
     });
 }

  <button onclick="logout()">LogOut</button>

Попробуй это

person Kishorevarma    schedule 05.02.2013
comment
Спасибо за вашу помощь. Это действительно сработало! Я был убежден, что мне нужен FB.init для запуска FB.logout. Видимо нет. - person Marco Gouveia; 07.02.2013

Попробуйте сделать это:

<div id="fb-root"></div>
<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'YOUR_APP_ID', // App ID
      channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
      status     : true, // check login status
      cookie     : true, // enable cookies to allow the server to access the session
      xfbml      : true  // parse XFBML
    });

    // Additional initialization code here
  };

  // Load the SDK Asynchronously
  (function(d){
     var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement('script'); js.id = id; js.async = true;
     js.src = "//connect.facebook.net/en_US/all.js";
     ref.parentNode.insertBefore(js, ref);
   }(document));
</script>

а затем вызовите FB.logout(). FB должен быть предварительно инициализирован.

Из документации:

Этот код загружает SDK асинхронно, поэтому он не блокирует загрузку других элементов вашей страницы. Это особенно важно для обеспечения быстрой загрузки страниц пользователями и SEO-роботами.

URL-адреса в приведенном выше коде относятся к протоколу. Это позволяет браузеру загружать SDK по тому же протоколу (HTTP или HTTPS), что и содержащая страница, что предотвращает появление предупреждений о небезопасном содержимом.

Функция, назначенная для window.fbAsyncInit, запускается сразу после загрузки SDK. Любой код, который вы хотите запустить после загрузки SDK, должен быть помещен в эту функцию и после вызова FB.init. Например, здесь вы можете проверить статус пользователя, вошедшего в систему, или подписаться на любые события Facebook, в которых заинтересовано ваше приложение.

person Hugo    schedule 28.02.2014