6

我剛剛修改了我的代碼庫以使用新的facebook-ios-sdk 3.0(來自以前的版本,2.x或whatnot)。將現有訪問令牌遷移到Facebook iOS SDK 3.0

一切都很好,直到我意識到我沒有考慮到已經授予應用程序權限的用戶以及之前的SDK實現。所以,我想檢查,看看是否的accessToken保存在NSUserDefaults的,如果是這樣,撥打電話打開會話:

if ([[NSUserDefaults standardUserDefaults] objectForKey:@"FBAccessTokenKey"] && 
     [[NSUserDefaults standardUserDefaults] objectForKey:@"FBExpirationDateKey"]) { 
     [FBSession openActiveSessionWithPermissions:permissions 
             allowLoginUI:allowLoginUI 
            completionHandler:^(FBSession *session, 
                 FBSessionState status, 
                 NSError *error) { 
     // deal with state change 
     } 

我的假設是,用戶不會有快速應用程序切換爲SSO,因爲他們已經有了。但是,這確實發生了什麼。

我寧願沒有每個現有用戶在升級時都需要重新登錄。

有沒有人成功升級而無需重新登錄?

謝謝

回答

2

我已經用facebook SDK 3.0升級了一個應用程序,它工作得很好。 Facebook SDK處理令牌本身,但您仍然可以訪問accessToken。

可以達到它像這樣的任何時間:

NSString *accessToken = [FBSession activeSession].accessToken; 

如果沒有標記設置這將返回的accessToken或爲零。您甚至可以在會話中定義令牌緩存規則集。請享用。