使用Auth.auth()。signOut()退出Firebase中的当前用户后,我运行此操作以注册新用户:
guard let email = emailTextField.text, let password = passwordTextField.text else {
print("Form is not valid")
return
}
Auth.auth().createUser(withEmail: email, password: password, completion: { (FIRUser, error) in
if error != nil {
print(error ?? "error")
}
print("Account creation successful")
})
guard let uid = Auth.auth().currentUser?.uid else {
print("No UID")
return
}
但是,它无法识别任何当前用户。但是,如果我再次运行它,在同一个会话中,它将识别用户。我尝试使用Dispatch队列设置延迟,但这没有帮助。
答案 0 :(得分:1)
重新启动应用时,Firebase可能需要一段时间才能验证用户是否仍在通过身份验证。它不是阻止你的应用程序,而是允许应用程序继续,然后激发所谓的"身份验证状态更改"事件完成后。为确保您能够捕获此事件,您需要添加完成块,如Get the currently signed-in user:
所示handle = Auth.auth().addStateDidChangeListener { (auth, user) in
// ...
}