我正在实现新的 Facebook SDK,除了登录后,一切似乎都按顺序进行。当应用程序将我带到 Safari 并我给它“好的”时,它会返回到应用程序并报告成功:
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen: {
NSLog(@"success");
}
.
.
.
}
但是当我立即检查状态时:
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) {
NSLog(@"Logged in");
} else {
NSLog(@"Not logged in");
}
我得到:未登录。我没有收到任何错误消息。 token 似乎在发行后就立即过期了。希望获得有关如何解决此问题的指导。该应用程序是作为新项目创建的,但是现有应用程序的更新。但是,运行新应用程序时,旧应用程序不在我的设备上。只是想我应该提一下这是否重要。
最佳答案
该状态特定于此条件:
/*! One of two initial session states indicating that a cached token was loaded;
when a session is in this state, a call to open* will result in an open session,
without UX or app-switching*/
FBSessionStateCreatedTokenLoaded = 1,
由于“成功”NSLog 在您发布的代码中执行,因此您的状态实际上是:FBSessionStateOpen。这意味着您已登录并拥有有效的访问 token (注销 FBSession.activeSession.accessToken 进行验证)。不管怎样,我相信你应该很好 - 你的loggedIn/notLoggedIn条件只是无效。
关于ios - iOS 6 上的 Facebook SDK 3.1.1 登录但 token 立即过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13434766/