web-dev-qa-db-de.com

Lesen des Firebase-Auth-Fehlers (Firebase 3.x und Swift)

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
            }
        }
 })
11
Ben

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")
            }
        }
36

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")

                //...
12
ezmegy

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!")
                }

            }
        }
8
Ahmadiah

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.

1
Sparq

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

     }
0
Gamz Rs