FB.getLoginStatus не срабатывает, если пользователь не вошел в Facebook - PullRequest
10 голосов
/ 29 августа 2011

Я работаю над приложением Facebook, которое интегрировано с Facebook, и пытаюсь получить сеанс FB пользователя. Насколько я понимаю, общий сценарий использования выглядит следующим образом.

  1. звонок FB.init()
  2. позвоните FB.getLoginStatus, позвонив ему.

Я запустил следующий код (идентификатор приложения).

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script type="text/javascript">
    <!--

    function init(){
        FB.init({
            appId  : '9999999999999',
            status : true, // check login status
            cookie : true, // enable cookies to allow the server to access the session
            xfbml  : true, // parse XFBML
            channelUrl : 'http://127.0.0.1:8888/channel.html', // custom channel
            oauth  : true // enable OAuth
        });
        alert('going to call FB.getLoginStatus ');

        FB.getLoginStatus(function(response) {
            alert('whoo hoo!!! getLoginStatus called the callback');
        });
    }
    init();
    //-->
</script>

Если пользователь уже вошел в Facebook в том же сеансе браузера, то все работает как положено - возвращает заполненный _response.authResponse_. Однако, если пользователь не вошел в Facebook, обратный вызов вообще не срабатывает. Проверяя сетевой журнал браузера, я вижу, что Facebook возвращает следующий ответ (запрос от http://www.facebook.com/dialog/oauth?).

Ошибка приложения: возникла проблема с получением данных для запрошенного вами приложения. Приложение может быть недействительным или может быть временный сбой. Пожалуйста, попробуйте позже.

Я проверял это на Chrome и Firefox (Mac).


Обновление

Я хотел бы поблагодарить всех, кто ответил.

Комментарий Бена содержал ответ.

Спасибо, Бен, ты избавил меня от многих разочарований.

Ответы [ 2 ]

12 голосов
/ 30 августа 2011

Причина - недавняя ошибка , которая влияет только на режим песочницы. Я отключил режим песочницы, и он работал как шарм.

0 голосов
/ 29 августа 2011

Попробуйте принудительно загрузить событие:

FB.getLoginStatus(function(response) {
    alert('whoo hoo!!! getLoginStatus called the callback');
}, true);

Это указано в FB.getLoginStatus .

В некоторых ситуациях событие может не срабатывать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...