使用Swift5.3.1、XCode12.2、iOS14.2、
我正试图在我的iOS应用程序中为我的Firebase-8月用户创建一个自动登录。
在iOS的Firebase文档中,它说:

因此,在阅读了这些文档之后,我的初步实现如下:
在AppDelegate.Swive的didFinishLaunchingWithOptions方法中,我实现了下面的if-语句,该语句检查currentUser的零状态。如果不是零,那么到主屏幕的路由就发生了。
// old Autologin
if let _ = Auth.auth().currentUser {
self.changeRootViewController(.mainscreen, animated: false)
}有了上面的实现,一切似乎都正常了。自动登录的行为确实运行良好。
然而,我意识到自动登录将永远保持不变(也就是说,在没有应用程序使用的两周后,每当我再次打开应用程序时,非零检查仍然会通过)。
我问自己:自动登录不是应该过期吗?
此外,currentUser属性(如"isEmailVerified")似乎没有考虑到当前的FirebaseAuth状态。例如,如果用户按下了电子邮件验证链接,那么它根本不影响Auth.auth().currentUser.isEmailVerified属性!自动登录将显示Auth.auth().currentUser上的旧属性。
然后,我在FirebaseAuth用户类上找到了以下方法:

这里是我从reload文档中扣除的最新实现:
// new Autologin
Auth.auth().currentUser?.reload(completion: { (error) in
if let error = error {
log.error("Auth.auth().currentUser reload faild with error: \(String(describing: error))")
} else if let user = Auth.auth().currentUser {
self.changeRootViewController(.mainscreen, animated: false)
}
})问题:
reload以便更新Auth.auth().currentUser字段更好地完成自动登录是否正确?发布于 2020-11-20 16:22:13
自动保持用户身份验证状态(到iOS上的密钥链),并在应用程序重新启动时尝试恢复它。此外,它每小时刷新身份验证状态(更具体地说:它所基于的ID令牌)。只要这些刷新成功,身份验证会话就不会自动过期。
要强制更新ID令牌,从而强制更新本地用户配置文件,可以在用户对象上调用reload。这是最常见的做法,以获取更新的属性的最新值,在服务器上的带外(因此,在客户端无法知道的方式),如isEmailVerified。
https://stackoverflow.com/questions/64932913
复制相似问题