Выйти из Facebook Connect в приложении Cakephp - PullRequest
1 голос
/ 22 июля 2009

Я хочу включить Facebook Connect в приложение Cakephp, над которым я работаю. Прямо сейчас я пытаюсь реализовать автоматический вход через Facebook Connect. Я могу начать новый сеанс входа в систему, записывая данные в $ this-> Session, когда пользовательский статус Facebook Connect «подключен», поэтому у меня работает первая половина функции. Проблема возникает, когда пользователь пытается выйти из системы. Как и в демонстрационном приложении The Run Around, у меня есть такая строка:

<a onclick="FB.Connect.logout(redirect_to_logout_action)">log out</a>

Действие выхода из системы очищает переменную сеанса входа в систему, но на следующей странице пользователь все еще входит в мой сайт, но не в Facebook. Пользователь может выйти из моего сайта, если он снова нажмет на ссылку выхода, поэтому я думаю, что когда он впервые попытается сделать это, он получит новый сеанс входа в систему на моем сайте, потому что facebook_client ( ) -> get_loggedin_user () еще что-то возвращает. Я что-то здесь не так делаю? Я думал, когда мой сервер получит запрос на выход из системы, что файлы cookie Facebook будут удалены FB.Connect.logout:?

Ответы [ 3 ]

1 голос
/ 22 июля 2009

Пусть ваш javascript сначала сделает:

FB.Connect.logout

Тогда

location.href="/logout.php";

И на logout.php есть

session_destroy();
session_start();
0 голосов
/ 10 сентября 2009

allyourcode,

У меня были похожие проблемы в приложении, которое я создал несколько месяцев назад. Мы использовали компонент Facebook (например, найденный здесь: от http://savarino.net/facebook-cakephp).

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

$logout_url = $this->Facebook->facebook->get_logout_url('http://' . $_SERVER['SERVER_NAME'] . $this->webroot);
try {
    $this->Facebook->facebook->expire_session();
} catch (Exception $e) {
    $this->Facebook->facebook->set_user(null, null);
    $this->Facebook->facebook->clear_cookie_state();
}

$this->redirect($logout_url);

Извините, я не могу быть более конкретным. Прошло несколько месяцев с тех пор, как я вернулся в это приложение (и несколько проектов с тех пор), но, надеюсь, это укажет вам правильное направление.

Сет

0 голосов
/ 22 июля 2009

Как сказал abales, я бы гарантировал, что любое действие выхода из системы перенаправляется на вызов следующего метода для компонента CakePHP Session:

$this->Session->destroy();

Это должно устранить сеанс Cake / PHP. После этого перенаправьте на любой контроллер + действие, подходящее для пользователя, который не вошел в систему.

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