web-dev-qa-db-fra.com

Lecture d’une erreur d’authentification Firebase émise (Firebase 3.x et Swift)

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

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

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

                //...
12
ezmegy

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

            }
        }
8
Ahmadiah

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.

1
Sparq

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

     }
0
Gamz Rs