У меня есть реализация для моего веб-сайта, чтобы иметь единый вход в facebook, используя их javascript sdk.

JavaScript добавляет cookie, и я справляюсь с этим нормально.

Вопрос связан с тем, что когда пользователь выходит из facebook, я бы ожидал, что сработают события auth.sessionChange или auth.logout, но это происходит только при обновлении страницы.

Поскольку моя реализация выполняется на стороне сервера, это означает, что после выхода пользователя из facebook он может получить доступ к одной защищенной странице еще раз, прежде чем будет выполнен надлежащий выход из системы.

Это нормальный случай или эти события обычно запускаются сразу, и я, возможно, делаю что-то неправильно в конфигурации приложения facebook?

3
jussinen 30 Июл 2010 в 14:52

2 ответа

Лучший ответ

Почти 1/2 года спустя я не знаю, полезно ли это, но я пробовал эти вещи сам и заметил, что решение для подписки не работает, если я вхожу в / выхожу из facebook с их сайта (не с текущей страницы, содержит объект FB, как при использовании FB.login ()).

Также, постоянно опрашивая getLoginStatus и getSession, ничего не меняется, если я вхожу / выхожу из facebook (! Со своего сайта).

Мой вывод ?! Их сценарий полностью несинхронизирован с реальными событиями на facebook. Единственный способ, который сработал для меня, - это постоянно делать FB.ini (...). (Это как постоянное обновление)

Надеюсь, это будет полезно другим людям, у которых такая же проблема ....?!?

0
Andr 2 Июн 2011 в 09:17

События auth.sessionChange или auth.logout запускаются, только если вы используете код (полученный со страницы разработчика FB):

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
  FB.init({appId: 'your app id', status: true, cookie: true, xfbml: true});
  FB.Event.subscribe('auth.sessionChange', function(response) {
    if (response.session) {
      // A user has logged in, and a new cookie has been saved
    } else {
      // The user has logged out, and the cookie has been cleared
    }
  });
</script>

Как видите, вам нужно использовать подписку на событие, заданную FB js sdk, иначе 2 события никогда не сработают, если вы используете их с другим кодом (например, jquery.bind())

0
sth 5 Янв 2011 в 14:41