有没有人有从旧的 iOS FB SDK(托管在他们的 GitHub 帐户上的那个)迁移到他们的 .framework(基于包的安装程序)的任何提示?我在获取现有身份验证令牌和到期日期对象以针对新的 FBSession 对象进行验证时遇到问题。
情况如下:
在旧的 SDK/技术中,Facebook iOS SDK 要求您保存身份验证等内容。令牌和到期日期通过您自己的存储机制手动进行。在基于新框架的 SDK 中,他们现在为您处理此问题,但为了迁移用户(即不让他们重新登录),我需要将此信息提供给新 SDK。
最终,Facebook 将 K-V 存储在 NSUserDefaults 中,他们甚至会告诉您根键名称以及它们用于存储此信息的字典的嵌套 K-V 的所有键。
他们的令牌类FBSessionTokenCachingStrategy
甚至有一个类方法来验证 NSDictionary 是否验证到建立可用 Facebook 会话的正确字典
+ (BOOL)isValidTokenInformation:(NSDictionary*)tokenInformation;
所以我接受了我预先存在的身份验证。令牌和到期,将它们放入新字典中,将其存储在正确的键位位置并同步 NSUserDefaults。
到目前为止还不错吧?好吧,一旦我通过初始化一个FBSession
对象
- (id)initWithAppID:(NSString*)appID
permissions:(NSArray*)permissions
urlSchemeSuffix:(NSString*)urlSchemeSuffix
tokenCacheStrategy:(FBSessionTokenCachingStrategy*)tokenCachingStrategy;
整个键从 NSUserDefaults 中删除,并且会话对象的state
属性处于FBSessionStateCreated
(即没有预先存在的状态)与它应该是什么状态FBSessionStateCreatedTokenLoaded
(即它知道它具有本地保存的属性并准备在线检查)的状态。
为什么会被移除?它针对类方法进行了验证。
谢谢