Я пытаюсь перейти на 3.1 SDK и столкнуться с некоторым проблемным поведением: когда я вхожу в систему через кнопку входа FB на моем сайте, страница перезагружается, несмотря на то, что у меня есть собственный метод JS, определенный в кнопке входа в систему " onlogin ".
Поскольку страница мгновенно перезагружается, кажется, что мой собственный скрипт «onlogin» (который проверяет пользователя FB и записывает их на MY-сайт), кажется, отключен или не срабатывает. Таким образом, пользователь не может войти на сайт.
Другой побочный эффект свойственен: после входа в FB vi на моем FB-сайте моего сайта я появлюсь, когда вы заходите на сайт Facebook.com, но через несколько секунд на Facebook.com появится всплывающее сообщение «Не авторизовано. Войдите в систему, чтобы продолжить (ДА НЕТ). "
Как обычно, я не могу найти помощь в документах, и я становлюсь очень тупым. Вот мой FB init:
<script> window.fbAsyncInit = function() { FB.init({ appId: '<?php echo cConfiguration::$facebookAppId;?>', cookie: true, xfbml: true, oauth: true }); FB.Event.subscribe('auth.logout', function(response) { window.location = '/signout.php5'; }); }; (function() { var e = document.createElement('script'); e.async = true; e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js'; document.getElementById('fb-root').appendChild(e); }()); </script>
Кнопка входа в систему:
<fb:login-button length="long" autologoutlink="false" onlogin="fbLogin();"></fb:login-button>
EDIT Я также пробовал этот код кнопки без каких-либо параметров или событий «onlogin», и я получаю такое же поведение.
Итак, мои вопросы:
Вы подключили обработчик событий для выхода, но не для входа. Добавь это.
FB.Event.subscribe('auth.login', function(response) { return false; });
Хотя предотвращение перезагрузки, вероятно, не то, что вы хотите сделать. Вместо того, что я нашел, работает хорошо, это определить, нажал ли пользователь кнопку входа или нет. Процесс есть.
Хорошо, я выяснил причину, по-видимому, неконтролируемой перезагрузки страниц
По какой-то причине событие auth.logout запускалось всякий раз, когда я входил в систему через подсказку входа в Facebook.
Поэтому я изменил эту строку:
FB.Event.subscribe('auth.logout', function(response) { window.location = '/signout.php5'; });
в
FB.Event.subscribe('auth.logout', function(response) { return false; });
Используйте это как свою кнопку входа, я считаю, что в вашем fbLogin () должно быть что-то; param, который перезагружает страницу. Обычное поведение – просто обновить кнопку, обновление страницы должно быть принудительно с помощью Event.subscribe.
<fb:login-button autologoutlink="false"></fb:login-button>