【发布时间】:2012-10-31 20:54:04
【问题描述】:
有没有人有任何从旧的 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 的状态(即它知道它具有本地保存的属性并准备好在线检查)。
为什么要删除它?它针对类方法进行了验证。
谢谢
【问题讨论】:
标签: ios facebook facebook-ios-sdk