2012-01-30 1 views
3

Если FB.init({status:true}) заставляет Javascript SDK загружать статус, что является самым эффективным способом получить статус?Если FB.init ({status: true}) заставляет Javascript SDK загружать статус, как я могу получить статус?

Должен ли я использовать асинхронный вызов для FB.getLoginStatus()? Или есть синхронный способ получить статус, который сохранит веб-запрос?

+0

вы можете зарегистрировать пользователя в стороне сервера. – Lix

+0

Правда, однако, в моем случае содержимое является статическим HTML, и вся интерактивность находится в браузере с помощью Javascript SDK. Даже если я запускаю скрипты на сервере, это замедлит время отклика для страницы, которая будет обслуживаться, не так ли? И даже тогда Javascript не узнает статус, и ему все равно придется обращаться к API. – CoderFromOuterSpace

ответ

1

Если вы хотите сделать это с помощью JavaScript, тогда единственный способ - позвонить FB.getLoginStatus(). Однако, если вас беспокоит, скажем, медленное время отклика, вы можете просто сохранить статус в cookie после успешного завершения процесса авторизации.

Хотя, поскольку мы говорим о миллисекундах, я бы отговорил вас от этого.

+0

Чтобы добавить к этому, ответ 'getLoginStatus' теперь кэшируется FB SDK – PhilT

+0

. С тех пор я разработал https://github.com/gajus/fuss.js, который представляет собой абстракцию вокруг fb.js, которая обеспечивает более интуитивно понятный API. – Gajus

0

Наиболее эффективным способом получения статуса является подписка на событие auth.authRepsonseChange.

пример:

var auth_response_change_callback = function(response) { 
 
    console.log("auth_response_change_callback"); 
 
    console.log(response); 
 
}; 
 

 
FB.Event.subscribe('auth.authResponseChange', auth_response_change_callback);

Источник: FB event documentation