Проблемы с выходом с сайта подключения Facebook и уничтожением сеансов - PullRequest
0 голосов
/ 10 октября 2009

У меня не получается получить приложение для подключения к Facebook, которое я создаю для выхода из системы пользователя (извините, нет URL-адреса, так как он все еще в dev). Каждый раз, когда пользователь щелкает ссылку с классом «logout», запускается следующий JS, который, кажется, работает и даже показывает модальный FB, сообщающий, что пользователь вышел из системы.

$(document).ready(function(){
    $('.logout').click(function(){
        //Kill facebook Session
        FB.Connect.logout(function() {
            window.location = $('.logout').attr("href");
        });
    });
});

При достижении обратного вызова, указанного выше, JS отправляет пользователя на страницу выхода из системы, где PHP снова принудительно удаляет пользовательский сеанс и гарантирует, что сеанс FB был удален. Затем пользователь отправляется обратно на страницу, на которой он находился, когда нажимал ссылку «Выйти».

//Remove our site session
Auth::logout();



/* FAIL
//Send user to FB logout page and then back here
$logout_url = $this->fb->get_logout_url( site_url( $return_to ? base64_url_decode($return_to) : '' ) );

// Clear any stored state
$this->fb->clear_cookie_state();

exit(header("Location: ". $logout_url));
*/



//FAIL
//$this->fb->logout( site_url( $return_to ? base64_url_decode($return_to) : '' ) );


//FAIL
//Remove user (is this needed..?)
//$this->fb->set_user(NULL, NULL);


//Remove the FB session cookies (in case the JS didn't)
$this->fb->clear_cookie_state();


// Redirect to privious page
redirect( ( $return_to ? base64_url_decode($return_to) : '') );

Тем не менее, весь этот процесс приводит к тому, что пользователь возвращается туда, где он был и все еще вошел в систему. Второй щелчок по ссылке, похоже, помогает и удаляет сеанс. Я наблюдал за firebug (w / firecookie), и страница выхода из PHP сообщает об удалении файлов cookie сеанса FB - но на следующей загруженной странице они все еще используются?!

Если кто-нибудь знает, как полностью УНИЧТОЖИТЬ ВСЕ FACEBOOKS Гм ... сеансы, тогда, пожалуйста, говорите.

: EDIT: Я даже пытался вручную удалить все куки на странице выхода из системы, но все равно не получается

if( $_COOKIE ) {

    foreach( $_COOKIE as $name => $value ) {

        //Get the current cookie config
        $params = session_get_cookie_params();

        // Delete the cookie from globals
        unset($_COOKIE[$name]);

        //Delete the cookie on the user_agent
        setcookie($name, '', time()-43200, $params['path'], '', $params['secure']);
    }
}

Ответы [ 3 ]

1 голос
/ 09 ноября 2009

Я предполагаю, что, поскольку вы запускаете API-классы Facebook, он читает сессию и снова устанавливает все файлы cookie, и ваш вызов Javascript только что был очищен.

php facebook lib и FB js lib используют одинаковые имена. (так что вы можете войти через javascript, и php lib также войдет в систему).

Существует специальная функция для выхода из системы и перехода по URL:

FB.Connect.LogoutAndRedirect(url); 
0 голосов
/ 15 июня 2011

Это сработало для меня (когда страница перенаправления очищает сервер)

            FB.logout(function(response) {
                window.location.href="/login/signout";
            });
0 голосов
/ 12 октября 2009

Просто используйте тег <fb:login-button> и убедитесь, что у вас есть autologoutlink='true' Затем, когда пользователь вошел в систему, распечатайте тег <fb:login-button>, и он будет отображаться как «Выход?» Кнопка

Надеюсь, это поможет.

EDIT: Документы для кнопки входа в систему: http://wiki.developers.facebook.com/index.php/Fb:login-button

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