Есть ли у кого-нибудь какие-либо советы по переходу со старого iOS FB SDK (тот, который размещен в их учетной записи GitHub) на их .framework (установщик на основе пакетов)? У меня возникают проблемы с получением существующих объектов токена аутентификации и даты истечения срока действия для проверки на соответствие новому объекту FBSession.
Вот ситуация:
В старом SDK/технике Facebook iOS SDK требовал, чтобы вы сохраняли такие вещи, как auth. токен и дату истечения срока действия вручную с помощью собственных механизмов хранения. В новом SDK на основе фреймворка теперь они обрабатывают это за вас, но для переноса пользователей (т. е. без повторного входа в систему) мне нужно предоставить эту информацию новому SDK.
Получается, что Facebook хранит K-V в NSUserDefaults, и они даже сообщают вам имя корневого ключа, а также все ключи для вложенных K-V словаря, который они используют для хранения этой информации.
Их класс токенов FBSessionTokenCachingStrategy
даже имеет метод класса, чтобы проверить, подтверждает ли NSDictionary правильный словарь, который устанавливает пригодную для использования сессию Facebook.
+ (BOOL)isValidTokenInformation:(NSDictionary*)tokenInformation;
Итак, я взял свой ранее существовавший auth. токен и срок действия, поместите их в новый словарь, сохраните его в правильном месте с ключом и синхронизируйте NSUserDefaults.
Пока все хорошо, верно? Хорошо, когда я инициализирую объект FBSession
через
- (id)initWithAppID:(NSString*)appID
permissions:(NSArray*)permissions
urlSchemeSuffix:(NSString*)urlSchemeSuffix
tokenCacheStrategy:(FBSessionTokenCachingStrategy*)tokenCachingStrategy;
Весь ключ удаляется из NSUserDefaults, а свойство state
объекта сеанса находится в состоянии FBSessionStateCreated
(т. е. без существовавшего ранее состояния) по сравнению с тем, что должно быть FBSessionStateCreatedTokenLoaded
(т. е. оно знает, что имеет локально сохраненные свойства и готово к онлайн-проверке).
Почему его удаляют? Это проверено на соответствие методу класса.
Спасибо