FB.INIT не форсирует логин даже со статусом: true - PullRequest
1 голос
/ 31 августа 2011

Мое приложение позволяет пользователям отправлять запросы с помощью диалога запросов Facebook.

Я запускаю процесс инициализации следующим образом:

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
    appId: '193078857407882',
    status: true,
    cookie: true,
     xfbml: false,
       });
</script>

Из того, что я понимаю в документации, 'status: true'должен проверить, вошел ли пользователь в facebook.

Однако в моем приложении, когда пользователь не вошел в систему, просто отображается следующее сообщение об ошибке:

An error occurred with hbg. Please try again later.

Как я могузаставить приложение проверять, вошел ли пользователь в систему, а если нет, войти в систему?

Rails 3.0.7, Ruby 1.9.2, Js SDK

Ответы [ 2 ]

4 голосов
/ 21 марта 2012

Согласно документации Facebook для FB.getLoginStatus, если вы хотите получить ответ от передачи status: true на FB.init, то вам нужно subscribe до события auth.statusChange:

В то время как вы можете позвонить FB.getLoginStatus в любое время (например, когда пользователь пытается выполнить социальное действие), большинству социальных приложений необходимо знать статус пользователя как можно скорее после загрузки страницы. В этом случае, вместо явного вызова FB.getLoginStatus возможно проверьте статус пользователя, установив параметр status: true с вами звоните FB.init.

Чтобы получить ответ на этот вызов, вы должны subscribe auth.statusChange event. Объект ответа, переданный этим событием: идентичный тому, который будет возвращен при вызове FB.getLoginStatus явно.

Так что в вашем коде вы бы сделали что-то вроде

FB.Event.subscribe('auth.authResponseChange', function(response) {
    alert('The status of the session is: ' + response.status);
});

За исключением того, что вы подпишетесь на auth.statusChange. Однако обратите внимание, что в соответствии с FB.Event.subscribe документами:

auth.statusChange () не имеет поля состояния.

2 голосов
/ 31 августа 2011

Вы можете проверить статус входа, позвонив в FB.getLoginStatus

    FB.getLoginStatus(function(response) {
        if (response.authResponse) {
        // logged in and connected user
        } else {
            FB.login(function(res) {
                if (res.authResponse) {
                    // user logged in
                } else {
                    // user cancelled login
                }
            });
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...