Если вы используете аутентификацию по электронной почте и паролю, решение очень простое.
Аутентификация Firebase не позволит дублировать электронные письма, поэтому при выполнении функции createUser, если электронная почта уже существует, Firebase вернет ошибку emailAlreadyInUse в параметре error. Затем вы можете привести его к ошибке NSE, чтобы увидеть, какой она есть, и обработать ее соответствующим образом.
Так что функция такая
Auth.auth().createUser(withEmail: createEmail, password: password ) { user, error in
if let x = error {
let err = x as NSError
switch err.code {
case AuthErrorCode.wrongPassword.rawValue:
print("wrong password")
case AuthErrorCode.invalidEmail.rawValue:
print("invalid email")
case AuthErrorCode.accountExistsWithDifferentCredential.rawValue:
print("accountExistsWithDifferentCredential")
case AuthErrorCode.emailAlreadyInUse.rawValue: //<- Your Error
print("email is alreay in use")
default:
print("unknown error: \(err.localizedDescription)")
}
//return
} else {
//continue to app
}
Я добавил несколько случайных ошибок в это утверждение, но проверил ссылку для получения полного списка всех AuthErrorCodes.
Вы также можете сделать это
Auth.auth().fetchSignInMethods(forEmail: user, completion: { (signInMethods, error) in
print(signInMethods)
})