Facebook fbsr и сессия не удаляются - PullRequest
2 голосов
/ 06 января 2012

У меня есть страница logout.php. Это вызывается нажатием кнопки выхода из системы, к которой прикреплен этот javascript:

 FB.getLoginStatus(function(response) {
    if (response.status === 'connected') {
      button.onclick = function() {
        FB.logout(function(response) {
          window.location = 'logout.php';
        });
      }
   }
 });

На странице выхода у меня работает этот php-код:

if (isset($_COOKIE['fbsr_' . $app_id])) {
    setcookie('fbsr_' . $app_id, $_COOKIE['fbsr_' . $app_id], time() - 3600, "/");
    setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() - 3600, "/");

    unset($_COOKIE['fbsr_' . $app_id]);  
    unset($_COOKIE['PHPSESSID']);
}

Проблема в том, что JavaScript отключает кого-либо. Сценарий php не удалит файлы cookie fbsr и phpsessid. Как я могу обойти эту проблему?

Ответы [ 2 ]

5 голосов
/ 09 января 2012

Для некоторых приложений FB устанавливает cookie-файл fbsr в домене ".your-domain.tld" (обратите внимание на предыдущий пункт).Файл cookie не будет удален, если вы не укажете правильный домен.Попробуйте это, и у вас будет выход из системы:

setcookie('fbsr_' . $appID, '', time()-3600, '/', '.'.$_SERVER['SERVER_NAME']);

Это ошибка FB, из-за которой cookie не удаляется при выходе из системы, поэтому ваш вызов $ fb-> getUser () APIвозвращает прежний идентификатор пользователя вместо NULL или 0. Это мир FB;) Привет!

0 голосов
/ 20 марта 2013

У меня была такая же проблема, хотя все файлы cookie были правильными (с двойной проверкой) Что, кажется, работает для меня, это setcookie ($ cookie_name, '', null, '/', '.'. $ base_domain); запишите нулевое значение вместо: time () - 3600

Честно говоря, я не знаю, почему это работает, а время () - 3600 - нет, но я перепроверил и все работает ... HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...