【发布时间】:2012-09-25 20:39:25
【问题描述】:
我有一个用户可以选择登录 FB 的应用程序。我的代码主要基于 FB 的教程,并且在大多数情况下,应用程序和 FB 集成按预期工作。我遇到的问题是该应用程序不记得从启动到启动用户选择将应用程序连接到 FB。我检查了 AppDelegate.m 以检查缓存的 FBSession:
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
// Yes, so just open the session (this won't display any UX).
NSLog(@"The state is IS 'State created token loaded'");
[self openSessionWithAllowLoginUI:NO];
} else {
// No, display the login page.
NSLog(@"The state is NOT 'State created token loaded'");
[self openSessionWithAllowLoginUI:YES];
}
每次我启动应用程序时,控制台中都会显示“状态不是'已加载状态创建的令牌'”行。这让我觉得我没有做正确的事情以使 FB 登录从启动到启动持续存在。
我真的可以在这里使用一些建议。需要做些什么来确保“FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded”在应用启动时为真?
【问题讨论】:
-
令牌是否在应用终止前存储?看看用户默认的
FBAccessTokenInformationKey。 -
这可能是解决我问题的关键。我不知道必须存储令牌...是否有 FB tute 涵盖 FB SDK 的这一方面?
-
我不知道。您不需要明确存储它们,但是当您在调试时反复重启应用程序时,这些东西可能会漏掉。如果您在启动时登录
[[NSUserDefaults standardUserDefaults] valueForKey:@"FBAccessTokenInformationKey"],它会说明什么? -
它说:(空)。我有点预料到,因为我不确定在哪里获取令牌存储在那里,也不知道在启动应用程序以重新打开 FB 会话时如何使用该 userDefault 值。我将在 developer.fb 上研究 FBSession 参考资料一段时间,但请务必发布您可能拥有的任何对我有帮助的信息。谢谢!
-
你想明白了吗?我有同样的问题,userDefault 返回(null)。您最终是否手动缓存了令牌?如果是这样,在哪里以及如何?谢谢!