Ну, я нашел обходной путь, хотя я совсем не горжусь им.Я использую эти события:
FB.Event.subscribe('auth.login', function(response) {
setTimeout('document.location.reload()',0);
});
FB.Event.subscribe('auth.logout', function(response) {
<? if ($_SESSION['user']['id']): unset($_SESSION['user']); ?>
setTimeout('document.location.reload()',0);
<? endif; ?>
});
Я храню всю пользовательскую информацию в сеансе, и условие, касающееся SESSION, гарантирует, что страница не окажется в цикле.SetTimeout используется из-за перезагрузки расположения окна Facebook Javascript SDK в Firefox .Затем я добавил функцию jQuery для перезагрузки страницы после нажатия кнопки logoutButton:
$(function() {
$('#logoutButton').click(function() {
setTimeout('document.location.reload()',0);
});
});
<span id="<?= $user ? "logout" : "login" ?>Button">
<fb:login-button autologoutlink="true"></fb:login-button>
</span>
Я протестировал это на Firefox и Chrome и работал нормально.Это не реальное решение, это скорее уродливое исправление :), но я все равно решил его опубликовать.Сейчас я думаю о том, чтобы фактически оставить всю «операцию выхода из системы», потому что большинство пользователей все равно не хотят выходить из Facebook.