ios - iOS 6 上的 Facebook SDK 3.1.1 登录但 token 立即过期

标签 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");
}

我得到:未登录。我没有收到任何错误消息。 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/

相关文章:

ios - 如何将用户的 Facebook 帐户与我的应用程序中的帐户相关联?

facebook - 您最想复制或最受欢迎的 Web API 是什么?

ios - Facebook iOS 应用程序的无效应用程序 ID

xcode - 构建框架作为构建阶段 xcode

ios - NSDate 作为 Swift 中的函数参数

iOS:隐藏/禁用新的 iOS 底栏

ios - 在 iOS 10 上的 MSStickerBrowserViewController 中,如何判断用户选择了哪个标签?

iphone - 如何在iPhone中使用自动释放

facebook - 代表 Facebook 页面发帖时出错

facebook - 检测 Facebook 登录失败