2016-04-22 46 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) 
     } 
    }