У меня есть реализация для моего веб-сайта, чтобы иметь единый вход в facebook, используя их javascript sdk.
JavaScript добавляет cookie, и я справляюсь с этим нормально.
Вопрос связан с тем, что когда пользователь выходит из facebook, я бы ожидал, что сработают события auth.sessionChange или auth.logout, но это происходит только при обновлении страницы.
Поскольку моя реализация выполняется на стороне сервера, это означает, что после выхода пользователя из facebook он может получить доступ к одной защищенной странице еще раз, прежде чем будет выполнен надлежащий выход из системы.
Это нормальный случай или эти события обычно запускаются сразу, и я, возможно, делаю что-то неправильно в конфигурации приложения facebook?
2 ответа
Почти 1/2 года спустя я не знаю, полезно ли это, но я пробовал эти вещи сам и заметил, что решение для подписки не работает, если я вхожу в / выхожу из facebook с их сайта (не с текущей страницы, содержит объект FB, как при использовании FB.login ()).
Также, постоянно опрашивая getLoginStatus и getSession, ничего не меняется, если я вхожу / выхожу из facebook (! Со своего сайта).
Мой вывод ?! Их сценарий полностью несинхронизирован с реальными событиями на facebook. Единственный способ, который сработал для меня, - это постоянно делать FB.ini (...). (Это как постоянное обновление)
Надеюсь, это будет полезно другим людям, у которых такая же проблема ....?!?
События 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()
)
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.