2015-07-20 93 views
13

我們正在研究一款使用Google對Firebase進行驗證的iOS應用。根據https://www.firebase.com/docs/ios/guide/user-auth.html#section-login Firebase表示,認證令牌每24小時到期。 我們想知道,如果存在以下情況是我們需要考慮的東西:需要進行Firebase重新驗證

  1. 用戶與谷歌和火力地堡
  2. 我們的應用程序得到了火力地堡身份驗證令牌在24小時內到期
  3. 用戶關閉我們的iOS應用驗證
  4. 在Firebase身份驗證令牌到期前1分鐘,用戶重新打開應用程序
  5. 一分鐘後,我們向Firebase發出請求。身份驗證令牌已過期。

看來我們必須通過觀察身份驗證更改https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication與Firebase重新進行身份驗證。但是,我們是否必須重新向上述#5向Firebase發出同樣的請求? 也似乎我們可以在cancelBlock重新驗證:

[ref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) { 
    NSLog(@"%@", snapshot.value); 
} withCancelBlock:^(NSError *error) { 
    NSLog(@"%@", error.description); 
    // reauthenticate and then re-issue request? 
}]; 

這不是很理想,因爲我們將不得不處處,我們提出一個要求編寫代碼。

處理這種情況的最佳做法是什麼? 當驗證令牌接近過期時,Firebase是否自動刷新?

+1

注:默認爲24小時,但你可以在會話時長 – sjm

+0

這是正確的登錄和身份驗證選項卡下進行更改。然而,無論間隔時間如何,問題在於是否有時間點谷歌oauth令牌有效,但firebase令牌到期。我們對30秒的Firebase超時進行的實驗似乎表明我們必須手動刷新Firebase身份驗證令牌 – vjy

+1

您必須手動刷新身份驗證令牌。您可以監視[.info/authenticated](https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication)以檢測更改狀態 - 比取消更好的答案回電話。 – Kato

回答

0

很明顯,問題是關於舊版本的Firebase及其SDK。由於Firebase記得用戶上次登錄您的應用的方式,因此當前版本的Firebase(3.X)使您更輕鬆。

所以,你應該簡單地調用 FIRApp.configure()一如既往例如在application: didFinishLaunchingWithOptions launchOptions:然後添加一個狀態偵聽器也是在像

FIRAuth.auth()?.addStateDidChangeListener() { (auth, firUser) in 
// do something with firUser, e.g. update UI 
} 

啓動您的應用程序的監聽器將自動圍繞每當有新的變化對您的用戶通過火力地堡您的應用程序啓動時調用和令牌由Firebase在後臺處理,即您不必處理過期的令牌。 (如果您使用Custom Auth System,這可能會更復雜)。

相關問題