iOS 6上的Facebook SDK 3.1.1登录但令牌立即过期

时间:2012-11-17 21:03:59

标签: ios facebook facebook-ios-sdk

我正在实施新的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");
}

我给了:没有登录。我没有收到任何错误消息。似乎令牌在发布后直接到期。想要如何解决这个问题的一些指导。此应用程序是作为新项目创建的,但是是现有应用程序的更新。但是,在运行新应用程序时,旧应用程序不在我的设备上。我以为我会提到它应该是重要的。

1 个答案:

答案 0 :(得分:1)

该状态特定于此条件:

 /*! 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 。这意味着您已登录并拥有有效的访问令牌(注销FBSession.activeSession.accessToken以进行验证)。无论如何,我相信你应该是好的 - 你的登录/未记录状态只是无效。