Facebook Connect - после входа всплывающее окно зависает в бесконечном цикле

Симптом: после подключения открывается всплывающее окно, и пользователь вводит имя пользователя + пароль. Всплывающее окно становится пустым и остается открытым.

Нет вызова функции входа в систему (но обновление страницы показывает, что куки установлены и пользователь фактически вошел в систему).

Я отладил код и обнаружил, что файл xdcommReceiver.js застрял в бесконечном цикле в функции dispatchMessage.

Дальнейшее расследование показывает, что в строке происходит исключение:

func = hostWindow.FB.XdComm.Server.singleton.onReceiverLoaded;

Исключением является "Отказано в доступе http://www.example.org/ для получения свойства Window.FB от http://example.org/".

Как мне это решить?

Дополнительная информация:

URL подключения к сайту: http://www.example.org/. Страница, на которой это происходит, имеет следующий формат: http://www.example/org/folder/folder2/

5 ответов

Решение

Решение было добавить document.domain=site.com в xd_received.htm файл (он спрятан где-то в вики-документации Facebook).

Эта проблема также возникает, когда некоторый код JavaScript меняет домен. Например, ваша страница в Axcom. Тогда скрипт на странице делает что-то вроде

<script>
    document.domain = "x.com";
<script>

Ваш домен изменен, и эта проблема появляется.

Для тех, кто имеет проблему с циклом и использует пример кода со страниц разработчиков Facebook API, у меня есть совет:

У меня такая же проблема. Что я сделал неправильно, так это то, что когда я модифицировал скрипт под свои нужды, я случайно заменил cookie с _cookie - это изменило переменную "cookie: true" и сделало бесконечный цикл.

FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true, _cookie: true, xfbml: true});

Строка должна сказать:

FB.init({appId: '<?= FACEBOOK_APP_ID ?>', status: true, cookie: true, xfbml: true});

Я надеюсь, что это помогает некоторым...

Я опубликовал http://forum.developers.facebook.com/viewtopic.php?pid=201495 несколько дней назад, и эта модификация - единственный найденный мной способ заставить его работать.

Сохраняя оригинальный файл xd_receiver.htm, даже указав полный путь, я просто не могу опубликовать свой сайт. Если вы видите, как я могу что-то настроить (посмотрите мой пост, пожалуйста), чтобы оно работало без изменений, скажите, пожалуйста!

Попробуйте использовать файл xd_receiver, а не делать его доступным с помощью скрипта. Также убедитесь, что ваша страница может найти файл xd_receiver. Чтобы избежать каких-либо проблем, вы можете указать полный путь к файлу xd_receiver, например, в своем коде:

www.yoursite.com/xd_receiver.htm

Другие вопросы по тегам