2012-11-17 80 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

沒問題 - 很高興幫助 –