我正在尝试对新用户进行身份验证,并使用以下代码将其电子邮件和密码存储到FirebaseAuth中:
Auth.auth().createUser(withEmail: email, password: password) { (user, error) in
if user == nil || error != nil {
let alert = UIAlertController(title: "Please Try Again",
message: "Invalid email or password",
preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default) {_ in })
self.present(alert, animated: true)
}
else {
self.performSegue(withIdentifier: "nextpage", sender: self)
}
}
但是,我遇到了一个问题,即当用户输入电子邮件已被使用时,FirebaseAuth不会返回错误。相反,它只会覆盖当前电子邮件。我在文档中读到,可以将名为ERROR_EMAIL_ALREADY_IN_USE的错误作为FirebaseAuthUserCollisionException的一部分引发,如何捕获?谢谢!
最佳答案
将此代码放在回调处理程序中:
if let error = error {
switch FIRAuthErrorCode(rawValue: error!._code) {
case .emailAlreadyInUse:
print("Email already in use")
default:
print("Other error")
}
}
现在,您可以删除
if user == nil || error != nil
if块。另请参见https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Enums/FIRAuthErrorCode以获取错误代码列表。
关于ios - 如何在Swift的FirebaseAuth中捕获ERROR_EMAIL_ALREADY_IN_USE?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44340473/