Je ne parviens pas à comprendre comment lire la clé FIRAuthErrorNameKey dans la nouvelle version de Firebase. Ce qui suit est ce que j'ai jusqu'à présent, mais la ligne "let errorCode = FIRAuthErrorNameKey" est incorrecte. En lisant la documentation Firebase j’ai aussi essayé d’accéder au code d’erreur de l’utilisateur userInfo, mais j’ai échoué et je suis à court d’idées.
// Send request to Firebase to add user to register user
FIRAuth.auth()?.createUserWithEmail(emailTextField.text!, password: passwordTextField.text!, completion: { (user, error) in
// Check for errors and respond to user accordingly.
if error != nil {
let errorCode = FIRAuthErrorNameKey
switch errorCode {
case "FIRAuthErrorCodeEmailAlreadyInUse":
// Add logic accordingly
case ...:
// Add logic accordingly
case default:
// Add logic accordingly
}
}
})
Essaye ça. Cela fonctionne pour moi. Aussi, après avoir collé ceci dans votre projet. Si vous avez besoin de voir tous les codes FIRAuthErrorCode
. Passez votre souris sur .ErrorCodeInvalidEmail
puis appuyez sur le bouton gauche de la souris pour afficher le reste.
Si vous avez des problèmes, faites-le-moi savoir et essayez de vous aider. Bonne chance!
FIRAuth.auth()?.createUserWithEmail(email, password: password) { (user, error) in
if error != nil {
if let errCode = FIRAuthErrorCode(rawValue: error!._code) {
switch errCode {
case .ErrorCodeInvalidEmail:
print("invalid email")
case .ErrorCodeEmailAlreadyInUse:
print("in use")
default:
print("Create User Error: \(error!)")
}
}
} else {
print("all good... continue")
}
}
Aucune des réponses ne semble être à jour, voici ce que je fais actuellement sur Swift 3.x, FirebaseAuth 4.0.0
Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
if let error = error as NSError? {
guard let errorCode = AuthErrorCode(rawValue: error.code) else {
print("there was an error logging in but it could not be matched with a firebase code")
return
}
switch errorCode {
case .invalidEmail:
print("invalid email")
//...
Firebase a un peu modifié le code et si vous débutez dans Firebase, il vous faudra un peu de temps pour que votre code fonctionne. J'ai passé presque 3 heures à comprendre ce qui se passait. Voici à quoi cela ressemble maintenant:
Auth.auth().createUser(withEmail: email, password: password) { (user: User?, error) in
if error != nil {
// Handle the error (i.e notify the user of the error)
if let errCode = AuthErrorCode(rawValue: error!._code) {
switch errCode {
case .invalidEmail:
print("invalid email")
case .emailAlreadyInUse:
print("in use")
default:
print("Other error!")
}
}
}
D'après l'extrait de code, il semble que vous tentiez d'utiliser le code d'erreur et non la clé FIRAuthErrorNameKey dans votre commutateur. Dans ce cas, vous souhaitez utiliser le code d'erreur de l'objet NSError renvoyé dans le rappel. Utilisez:
let errorCode = error.code
Ainsi, votre variable errorCode contiendra le code d'erreur renvoyé et vous pourrez poursuivre avec votre logique de traitement des erreurs.
je ne sais pas si cela aide, mais vous pouvez le faire aussi:
let errcode = FIRAuthErrorCode(rawValue: error!._code)
if errcode == FIRAuthErrorCode.errorCodeRequiresRecentLogin{
//do error handling here
}