Firebase 3.2.0 – Internal Error on Create User

I’ve just kicked off a new project (Swift 2.2; iOS 9; Xcode 7.3.1) using Firebase 3.2.0 and have hit the following error as part of my authorise/signup process when entering both an invalid email and a weak password:

NSError

  • Swift 3 : tableView duplicating loaded images from Firebase
  • Pass value with action sheet button
  • Structuring data for chat app in Firebase
  • Firebase API is not sending push notifications when using the API
  • Sign In by UserName : Firebase,Swift
  • Retrieve randomly generated child ID from Firebase
  • Error Domain=FIRAuthErrorDomain Code=17999 "An internal error has occurred, print and 
    inspect the error details for more information." UserInfo={error_name=ERROR_INTERNAL_ERROR, 
    NSUnderlyingError=0x7c0549a0 {Error Domain=FIRAuthInternalErrorDomain Code=3 "(null)" 
    UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey=<CFBasicHash 0x7c04bd90 [0x1a701f8]>
    {type = immutable dict, count = 3,
    entries =>
    0 : <CFString 0x7c0fb0c0 [0x1a701f8]>{contents = "errors"} = 
    <CFArray 0x7c0713a0 [0x1a701f8]>{type = immutable, count = 1, values = (
    0 : <CFBasicHash 0x7c0fac00 [0x1a701f8]>{type = immutable dict, count = 3,
    entries =>
    0 : <CFString 0x7c051080 [0x1a701f8]>{contents = "reason"} = 
    <CFString 0x7c0553f0 [0x1a701f8]>{contents = "invalid"}
    1 : <CFString 0x7c055f30 [0x1a701f8]>{contents = "message"} = 
    <CFString 0x7c061580 [0x1a701f8]>{contents = "INVALID_EMAIL"}
    2 : <CFString 0x7c054fd0 [0x1a701f8]>{contents = "domain"} = 
    <CFString 0x7c060290 [0x1a701f8]>{contents = "global"}
    }
    
    )}
    1 : <CFString 0x7c05aae0 [0x1a701f8]>{contents = "code"} = 
    <CFNumber 0x7c073010 [0x1a701f8]>{value = +400, type = kCFNumberSInt64Type}
    2 : <CFString 0x7c067e70 [0x1a701f8]>{contents = "message"} = 
    <CFString 0x7c0543a0 [0x1a701f8]>{contents = "INVALID_EMAIL"}
    }
    }}, NSLocalizedDescription=An internal error has occurred, print and inspect the error 
    details for more information.}
    

    …and my code is as follows….

    AuthViewController.swift

    if let email = emailField.text where email != "", let password = passwordField.text where 
      password != "" {FIRAuth.auth()?.signInWithEmail(email, password: password) { (user, error) in
        if let error = error {
                if let errorCode = FIRAuthErrorCode(rawValue: error.code) {
                    switch errorCode {
                    case .ErrorCodeNetworkError:
                        print("A network error occurred")
                    case .ErrorCodeUserNotFound:
                        print("ATTEMPTING TO CREATE USER")
                        FIRAuth.auth()?.createUserWithEmail(email, password: password) { (user, error) in
                            if let error = error {
                                if let errCode = FIRAuthErrorCode(rawValue: error.code) {
                                    switch errCode {
                                    case .ErrorCodeInvalidEmail:
                                        print("invalid email")
                                    case .ErrorCodeWeakPassword:
                                        self.insertErrorLabel("Password is considered weak (< 6 characters). Try again")
                                    default:
                                        print("Create User Error: \(error)")
                                    }
                                }
                            } else {
                                // create a user in the database...
                            }
                        }
                    case .ErrorCodeUserTokenExpired:
    
                    ....
    

    Execution hits the .ErrorCodeUserNotFound case in signInWithEmail(). It then hits the default case in createUserWithEmail().

    From the docs it appears as though there’s an INVALID_EMAIL error key available in the createUserWithEmail() function, however, it appears to be throwing an internal error rather than hitting the InvalidEmail error case.

    Three questions:

    1. Do I have an acceptable flow here with signIn failure leading to createUser?
    2. What’s the actual cause of the error?
    3. How can I address it?

    Thanks in advance.

    3 Solutions Collect From Internet About “Firebase 3.2.0 – Internal Error on Create User”

    For future reference, I raised a bug for the above error and Firebase/Google have confirmed it will be addressed in the next release of the SDK.

    I had the same problem and noticed that I wasn’t even able to add a user through the Firebase console.
    Strangely, though, I enabled than disabled Google login, and I was able to manually add a user. So I tried to create a user with createUserWithEmail and it worked.

    You may want to try enabling and disabling the login with email feature, which may somehow reset some settings on the Firebase side which fixes the issue. This “workaround” leads me to believe that the issue was on their server side and not SDK.

    Checkout this post: https://stackoverflow.com/a/38076718
    You can solve the problem by activating the Identity Toolkit API on Google Console.