Auth.auth().signIn(withEmail:
在我的情况下,当我第一次打开应用程序并像上面的代码一样登录firebase帐户时然后重新打开app
let user = Auth.auth().currentUser
user不是nil然后我重新打开app再次得到currentUser user是nil这意味着我没有登录
我让另一个应用这样做,但用户总是不为nil
我想知道为什么会发生这种情况。
Firebase在应用重启时自动恢复已认证的用户。但这需要调用服务器,这可能需要一些时间。如果您在检查还在进行的时候检查Auth.auth().currentUser
,您将得到nil
作为结果。
要确保在完成初始检查后获得该值,请使用验证状态侦听器,如获取当前用户的文档中的第一个代码片段所示。从那里:
Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
当这个监听器第一次触发时:
- 如果用户认证状态可以恢复,
user
变量将有一个值, - 或者是
nil
,如果用户没有在上次应用程序运行时登录,或者认证状态无法恢复(例如,因为帐户被禁用,或密码被更改)。
我认为这是一个很大的可能性,你可能在另一个设备上登录或在不同的配置文件上登录,不知道,你可能有一些同步问题或安全问题,做了安全测量,直到你修复安全问题