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)


опитахте ли да има някакво събитие onclick на бутон е 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