【问题标题】:Persistent user authentication Firebase Swift持久用户身份验证 Firebase Swift
【发布时间】:2016-04-22 10:22:21
【问题描述】:

您好,我正在尝试开始使用 Firebase 和 Swift,但在验证用户身份并使其在应用重新启动时保持不变时遇到了一些问题。

我正在使用 Twitter authHelper,它在经过身份验证后返回一个 FAuthData 对象,其中包含用户的 uid 和所有这些内容。

问题是当我(或系统)杀死应用程序时,所有的身份验证都消失了,我需要重新登录,因为我没有存储“authData”对象。

我该怎么做?

非常感谢

【问题讨论】:

  • Firebase 自动将身份验证令牌保留在用户的钥匙串中。如果你在你的视图控制器中monitor the authentication state,它应该被恢复。但是如果没有看到你的代码,就不可能说出发生了什么。请提供MCVE
  • 使用 RealmSwift 是 NSUserDefaults 的最佳替代品,Realm 的工作速度比 NSUserDefaults 快。

标签: swift firebase


【解决方案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)
        }
    }

【讨论】:

    猜你喜欢
    • 2019-09-20
    • 2019-06-25
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2016-10-20
    相关资源
    最近更新 更多