Ich habe Probleme beim Herausfinden des FIRAuthErrorNameKey in der neuen Version von Firebase. Folgendes habe ich bisher, aber die Zeile "let errorCode = FIRAuthErrorNameKey" ist falsch. Aus dem Lesen der Firebase-Dokumentation habe ich auch versucht, auf den Fehlercode aus der userInfo zuzugreifen, war aber erfolglos und hatte keine Ideen.
// 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
}
}
})
Versuche dies. Das funktioniert für mich. Auch nachdem Sie dies in Ihr Projekt eingefügt haben. Wenn Sie alle FIRAuthErrorCode
-Codes anzeigen müssen. Bewegen Sie die Maus über .ErrorCodeInvalidEmail
und drücken Sie dann die linke Maustaste. Der Rest wird angezeigt.
Wenn Sie Probleme haben, lassen Sie es mich wissen und versuchen Sie zu helfen. Viel Glück!
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")
}
}
Keine der Antworten scheint auf dem neuesten Stand zu sein. Hier ist das, was ich derzeit auf Swift 3.x, FirebaseAuth 4.0.0, mache
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 hat den Code ein wenig geändert, und wenn Sie neu bei Firebase sind, wird es einige Zeit dauern, bis der Code funktioniert. Ich habe fast 3 Stunden damit verbracht herauszufinden, was los ist. So sieht es jetzt aus:
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!")
}
}
}
Es scheint, als würden Sie versuchen, den Fehlercode und nicht den FIRAuthErrorNameKey in Ihrem Switch zu verwenden. In diesem Fall möchten Sie den Fehlercode des im Callback zurückgegebenen NSError-Objekts verwenden. Verwendung:
let errorCode = error.code
Auf diese Weise enthält Ihre errorCode-Variable den zurückgegebenen Fehlercode, und Sie können mit Ihrer Fehlerbehandlungslogik fortfahren.
ich weiß nicht, ob das hilft, aber Sie können dies auch tun:
let errcode = FIRAuthErrorCode(rawValue: error!._code)
if errcode == FIRAuthErrorCode.errorCodeRequiresRecentLogin{
//do error handling here
}