2015-05-18 2 views
2

В начале моего первого действия я хочу проверить, не был ли пользователь уже зарегистрирован в facebook. Сайт разработки и еще один пост здесь говорят, что вы должны проверить его с помощью getcurrentaccesstoken(). Хотя это действительно, кажется, что это не точно, если вы выполните эту проверку сразу после инициализации facebookdk. Как это:Facebook Sdk 4.0 как проверить, что вы вошли в систему сразу после sdkinitialize

FacebookSdk.sdkInitialize(getApplicationContext()); 
    if (AccessToken.getCurrentAccessToken() == null || AccessToken.getCurrentAccessToken().isExpired()){ 
     // start loginactivity 
    } 

С facebooksdk.initialize() получает маркер из общих предпочтений асинхронным, если оператор выполняется до того sdkinitialize делается. Поэтому AccessToken всегда имеет значение null.

Я в основном хочу сделать эту проверку сразу после инициализации, есть ли способ сделать это?

+0

Вы должны подождать (Thread.Sleep или любой) до 'FacebookSdk.sdkInitialize' done –

ответ

0

Вы можете сохранить и извлечь токен доступа из общих настроек? Когда пользователь сначала регистрируется, просто сохраняет токен доступа, а затем, когда вы инициализируете facebook, вы можете просто получить токен из общих настроек. В основном вы будете делать то, что делает метод facebook, но вам просто не нужно ждать.

+0

Acesstoken - это класс, а не строка, bool и т. Д. Поэтому, к сожалению, я не могу напрямую сохранить accestoken в общих настройках. Я думаю, что facebook хранит разные значения в общих предпочтениях для генерации определенного класса AccessToken для меня. –

+0

Правильно, но AccessToken.getCurrentAccesstoken возвращает строку так, что когда пользователь впервые войдет в систему, вы можете вызвать метод и сохранить строку доступа к токенам, которую она возвращает. затем, когда они снова заходят в систему, вместо вызова AccessToken.getAccessToken(), вы можете просто вызвать общие настройки самостоятельно и получить токен доступа? –

+0

Если я это сделаю, я действительно могу проверить, если он уже зарегистрирован, но мне также нужен токен, чтобы проверить, истекло ли это. Я не ввел это в код изначально, но я добавил его сейчас. Кроме того, со значением строки вы ничего не можете сделать, насколько я знаю. –