Кнопка выхода из Facebook и перенаправление после выхода из системы - PullRequest
9 голосов
/ 26 января 2011

Я использую этот код

<fb:login-button autologoutlink="true" perms="user_likes" size="large"></fb:login-button>

для создания кнопки fb входа / выхода. Все работает, после входа в систему кнопка входа становится кнопкой выхода из системы. Но если пользователь нажимает кнопку выхода из системы, текущая страница не обновляется, и поэтому все, что должно появиться только после аутентификации пользователя, все еще остается там, пока не будет выполнено обновление страницы вручную.

Этого не произойдет, если я получу URL выхода из системы (Javascript SDK)

$logoutUrl = $facebook->getLogoutUrl();

и затем самостоятельно внедрить кнопку выхода из системы; в этом случае передается правильный «следующий» параметр (с URL текущей страницы) и текущая страница перезагружается.

Я все еще хотел бы использовать первое решение, возможно ли сделать так, чтобы оно использовало параметр "next"?

Ответы [ 3 ]

15 голосов
/ 26 января 2011

Сделайте перенаправление самостоятельно - добавьте это в JavaScript, где-то после FB.init():

<script>
  FB.Event.subscribe("auth.logout", function() {window.location = '/logout'});
</script>

Эта функция будет срабатывать при выходе из системы через кнопку FB.

1 голос
/ 19 октября 2012

Для встроенной аутентификации (Facebook + Asp.Net MVC) я просто использую Javascript и FormsAuthentication.SignOut();

function LogoutFacebook() {    
FB.logout(function (response) {
    window.location = "/facebook/logout/";
});   }
1 голос
/ 06 декабря 2011

Над ответом Писквор сделал это для меня. Сумасшедший, сколько часов я провожу, пытаясь понять это.

Основная проблема с плагинами, такими как этот Facebook для CakePHP, заключается в том, что они не поставляются с обновлениями. API, особенно популярные, такие как Facebook, все время меняются, потому что их обновляют. Если парень, который написал это изначально как хобби, продолжает свою жизнь и перестает обновлять SDK, люди, которые менее осведомлены о том, как изменить эти вещи, застревают.

КОД РАБОТЫ:

Тем не менее, спасибо за отличное решение Piskvor, вот мой кусок кода для

apps/plugins/facebook/views/helpers/facebook.php

            $init .= $this->Html->scriptBlock(
<<<JS

window.fbAsyncInit = function() {
    FB.init({
        appId : '{$appId}',
        session : {$session}, // don't refetch the session when PHP already has it
        status : true, // check login status
        cookie : true, // enable cookies to allow the server to access the session
        xfbml : true // parse XFBML
    });
     FB.Event.subscribe("auth.logout", function() {
       window.location = '/users/logout'
     });
    {$callback}
};

Ключевой фрагмент кода здесь:

     FB.Event.subscribe("auth.logout", function() {
         window.location = '/users/logout'
     });
    {$callback}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...