6

我刚刚彻底检查了我的代码库以使用新的 facebook-ios-sdk 3.0(来自以前的版本,2.x 或其他版本)。

一切都很好,直到我意识到我没有考虑到已经授予应用程序权限/使用 SDK 的先前实现登录的用户。所以我尝试检查 accessToken 是否保存在 NSUserDefaults 中,如果是,则调用打开会话:

    if ([[NSUserDefaults standardUserDefaults] objectForKey:@"FBAccessTokenKey"] &&
        [[NSUserDefaults standardUserDefaults] objectForKey:@"FBExpirationDateKey"]) {
        [FBSession openActiveSessionWithPermissions:permissions
                                       allowLoginUI:allowLoginUI
                                   completionHandler:^(FBSession *session,
                                                       FBSessionState status,
                                                       NSError *error) {
         // deal with state change
         }

我的假设是用户不必为 SSO 快速切换应用程序,因为他们已经拥有了。然而,事实确实如此。

我宁愿不让每个现有用户在升级时都需要重新登录。

有没有人成功升级而无需重新登录?

谢谢

4

2 回答 2

2

我已经用 facebook SDK 3.0 升级了一个应用程序,它工作得很好。Facebook SDK 自己处理令牌,但您仍然可以访问 accessToken。

您可以随时访问它,如下所示:

NSString *accessToken = [FBSession activeSession].accessToken;

如果没有设置令牌,这将返回 accessToken 或 nil。您甚至可以在会话上定义令牌缓存规则集。享受。

于 2012-09-24T16:43:02.133 回答
1

答案在我同事的另一篇文章中。我们能够将用户从 SDK pre 3.0 升级到 3.1,而无需用户重新登录。它涉及到 FBSessionManualTokenCachingStrategy 的使用:

从 iOS Facebook 2.x -> 3.x 迁移时如何避免注销用户

于 2012-11-16T00:45:11.967 回答