Автоматический вход в Facebook — уведомить пользователя

Я разрешаю своим пользователям входить в мое веб-приложение, используя свою учетную запись Facebook.

Пользователь автоматически входит на мой сайт через Facebook, если -

  • Они зарегистрированы на моем сайте с помощью Facebook
  • Они не вышли из моего сайта и не завершили сеанс
  • В настоящее время они вошли в Facebook

Это нормально, за исключением того, что существует пауза между доступом пользователя к домашней странице и переходом на его панель инструментов, пока Facebook проверяет, вошли ли они в систему. Есть ли способ показать своего рода предварительный загрузчик, который говорит: «Вход в Facebook "при переходе?

Я использую следующий javascript Facebook:

<script>
  window.fbAsyncInit = function() {
              FB.init({
                appId      : 'xxxxxxxxx',
                status     : true, 
                cookie     : true,
                xfbml      : true,
                oauth      : true,
              });

              FB.Event.subscribe('auth.login', function() {
                  FB.api('/me', function(response) {
                window.location='mysite/fb_signin/';
                  });
              });

            };
            (function(d){
               var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
               js = d.createElement('script'); js.id = id; js.async = true;
               js.src = "//connect.facebook.net/en_US/all.js";
               d.getElementsByTagName('head')[0].appendChild(js);
             }(document));

          </script>

Спасибо.


person Tom    schedule 13.01.2012    source источник


Ответы (2)


С API facebook вы можете проверить, подключен ли пользователь или нет, прежде чем вызывать FB.api (это то, что требует времени).

http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

Это должно помочь

person Marc Simon    schedule 13.01.2012

Я согласен с Марком в том, что вы можете использовать getLoginStatus(), чтобы помочь вам определить, что они из себя представляют, прежде чем отправлять их в то или иное место. Тем не менее, вы сказали, что что-то было медленным. Итак, это заставило меня взглянуть на ваш код, и оказалось, что вам не хватает channelUrl в вашем вызове FB.init() (см. https://developers.facebook.com/docs/reference/javascript/ для получения дополнительной информации). без channelUrl взаимодействие пользователя с функциями Javascript SDK будет вялым и медленным.

person DMCS    schedule 13.01.2012