Эта функция может перенести ваше существующее состояние токена, перезаписав состояние токена sdk, кэшированное по умолчанию, с параметрами, которые вы передаете:
private final void migrateToken(String accessToken, long expiresMilliseconds,
List<String> permissions, boolean isSSO,
long lastRefreshMilliseconds) {
Bundle bundle = new Bundle();
TokenCache.putToken(bundle, accessToken);
TokenCache.putExpirationMilliseconds(bundle, expiresMilliseconds);
TokenCache.putPermissions(bundle, permissions);
TokenCache.putLastRefreshMilliseconds(bundle, lastRefreshMilliseconds);
TokenCache.putIsSSO(bundle, isSSO);
SharedPreferencesTokenCache cache = new SharedPreferencesTokenCache(this);
cache.save(bundle);
}
Если у вас нет сохраненных разрешений, вы должны просто передать список разрешений, которые вы запросили, когда получили токен, или пустой ArrayList, если вы ничего не запрашивали или не знаете.
Параметр isSSO указывает, получили ли вы токен с помощью Facebook Login/SSO с приложением facebook (true) или с помощью WebView для входа (false). Токены, полученные через вход через Facebook, могут быть расширены, и это логическое значение определяет, должен ли SDK автоматически пытаться расширить токен.
Эта функция перезаписывает состояние, которое считывается конструктором сеанса. Поэтому, если вы вызываете функцию, вам нужно будет создать сеанс, чтобы использовать его. Логика может выглядеть так:
Session session = Session.openActiveSession(this);
if ((session == null) && hasOldTokenState()) {
migrateToken(...);
session = Session.openActiveSession(this);
}
// if session is still null, user will have to log in...
person
rightparen
schedule
09.11.2012