2012-11-17 81 views
0

我正在实施新的Facebook SDK,除了登录之后,所有内容似乎都是按顺序排列的。当应用程序将我带到Safari并给予'好吧”,它返回到应用程序,并报告成功:iOS 6上的Facebook SDK 3.1.1登录,但令牌立即失效

- (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

那个状态是特定于这个条件:

/*! 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以进行验证)。无论如何,我相信你应该很好 - 你的登录/ notLoggedIn条件是无效的。

+0

是的,我知道这一点。不只是在开玩笑,感谢buddy – sooper

+0

没问题 - 很高兴帮助 –