我正在尝试使用以下代码验证新用户并将其电子邮件和密码存储到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的一部分抛出,如何捕获它?谢谢!
答案 0 :(得分:2)
将此代码放在回调处理程序中:
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 block。
另请参阅https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Enums/FIRAuthErrorCode以获取错误代码列表。
答案 1 :(得分:0)
2019年4月
{ (error) in
switch AuthErrorCode(rawValue: error._code) {
case .emailAlreadyInUse?:
print("Email is already in use")
default:
print("Other error types.")
}
}