我正在尝试对新用户进行身份验证,并使用以下代码将其电子邮件和密码存储到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/

10-10 03:47