Неоднократно проверять статус входа пользователя? - PullRequest
0 голосов
/ 17 марта 2012

Я бы хотел регулярно проверять статус вошедшего в систему пользователя.Мой метод заключается в следующем, но я не уверен, что это лучший способ сделать это.

window.fbAsyncInit=function(){
    FB.init({
        appId:'123',
        status:true,
        cookie:true,
        xfbml:true,
        channelUrl:'file',
        oauth:true
    });
    setInterval(function(){
        FB.getLoginStatus(function(a){
            // do something
        },300000);
    });
}

Мне известны функции «подписки», но я не совсем уверен, чтоони для.Если они подходят, я подумаю об их использовании, но мне нужно иметь более четкое представление о том, что они делают и как часто.Я прочитал документацию, и они просто говорят, что она прикрепляет обработчик.Это не очень подробно!К чему он прикрепляет обработчик !! ??

Кроме того, если я хочу вызвать FB.getLoginStatus вне функции 'fbAsyncInit', возможно ли это?высоко ценится.

Ответы [ 2 ]

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

Потратив долгое время на эту проблему, я решил пойти с моим setTimeout решением. Это было по нескольким причинам:

  1. Event.subscribe не сработал очень хорошо, на самом деле, он может быть сочтен бесполезным !! Мне удалось запустить его, но событие было запущено только примерно через полчаса выхода из Facebook. Кроме того, он отключается, если сеанс не найден, и, следовательно, не определяет, авторизованы ли вы в Facebook.
  2. С помощью моего метода я точно знаю, когда произойдет событие, и у меня намного больше контроля над ним.

Так что теперь, если у вас есть Facebook, открытый в другой вкладке и вход или выход, мой сайт обнаружит это и соответственно изменит содержание на странице.

0 голосов
/ 17 марта 2012

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

FB.Event.subscribe('auth.login', function(response) {
  // do something with response
});

Вышеприведенное «подписывает» вас на событие «auth.login».Это означает, что каждый раз, когда изменяется статус «auth.login», выполняется вышеуказанный обратный вызов.Вы можете заменить событие несколькими другими поддерживаемыми событиями и запускать обратные вызовы по мере их поступления.Если вы хотите динамически прекратить прослушивание любого события, вы можете в любое время в своем коде вызвать event.unsubscribe и вуаля, вы больше не слушаете изменения события.

Источник: http://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/

...