如何在Swift中捕获FirebaseAuth中的ERROR_EMAIL_ALREADY_IN_USE?

时间:2017-06-03 05:02:23

标签: ios swift firebase-authentication

我正在尝试使用以下代码验证新用户并将其电子邮件和密码存储到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的一部分抛出,如何捕获它?谢谢!

2 个答案:

答案 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.")
        }
    }