2016-04-22 81 views
0

嗨,我正在嘗試開始使用Firebase和Swift,但我在驗證用戶身份並使其在應用程序重新啓動時持久存在一些問題。持久的用戶身份驗證Firebase Swift

我使用的Twitter authHelper,它在驗證時返回一個包含用戶的uid和所有這些東西的FAuthData對象。

事情是當我(或系統)殺死應用程序所有的身份驗證的東西吹走了,我需要重新登錄,因爲我沒有存儲「authData」對象。

我應該怎麼做?

謝謝你這麼多

+0

Firebase將認證令牌自動保留在用戶的鑰匙串中。如果您在視圖控制器中[監視身份驗證狀態](https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication),則應該恢復它。但是如果沒有看到你的代碼,就不可能說出發生了什麼事情。請提供[MCVE](http://stackoverflow.com/help/mcve)。 –

+0

使用RealmSwift是NSUserDefaults的最佳選擇,Realm的工作速度比NSUserDefaults快。 –

回答

1

做,這是NSUserDefaults的使用最好的方式。這可以通過以下方式來完成(假設你正在使用FIRAuth但Twitter登錄會給你同樣的authData):

FIRAuth.auth()!.createUserWithEmail(email, password: pwd, completion: { authData, error in 

      if error == nil { 
       //enable automatic login for future usage 
       NSUserDefaults.standardUserDefaults().setValue(authData?.uid, forKey: "uid")  
}) 

當用戶打開應用程序下一次,請執行下列操作檢查,看是否或者用戶以前未登錄過:

if NSUserDefaults.standardUserDefaults().valueForKey(KEY_UID) != nil { 
     dispatch_async(dispatch_get_main_queue()) { 
      [unowned self] in 
      self.performSegueWithIdentifier(SEGUE_LOGGED_IN, sender: nil) 
     } 
    }