2016-05-21 4 views
1

У нас есть огромное обновление Firebase, и я борюсь с системой auth. Я хочу показывать предупреждения, когда выполняется другая ошибка.Создание нового пользователя Firebase - правильный путь

Теперь у меня есть

FIRAuth.auth()?.createUserWithEmail(email, password: pwd) { (user, error) in 

        if let error = error { 
         print(error.localizedDescription) 

         if error.code == statusTooShortPassword { 
          Alert(title: "Error", message: "The password must be 6 characters long or more") 
           .showOkay() 
         } else if error.code == statusEmailInvalid { 
          Alert(title: "Error", message: "Invalid email. Try again") 
           .showOkay() 
         } else { 
          print(error) 
          Alert(title: "Error", message: "Try again") 
           .showOkay() 
         } 

        } 
       } 

Но у меня есть сильное чувство error.code это не самый лучший способ справиться с созданием нового пользователя. Я смотрю на эту часть документации:

enter image description here

Но я не знаю, как реализовать FIRAuthErrorCodeInvalidEmail в FIRAuth.auth()?.createUserWithEmail

Может кто-нибудь, пожалуйста, обеспечить правильный способ сделать это, пожалуйста?

UPDATE: Когда электронная почта в недопустимом формате я получаю это:

Error Domain=FIRAuthErrorDomain Code=17999 "An internal error has occurred, print and inspect the error details for more information." UserInfo={NSUnderlyingError=0x7fc3537ceca0 {Error Domain=FIRAuthInternalErrorDomain Code=3 "(null)" UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey=<CFBasicHash 0x7fc3537d28c0 [0x1091b5a40]>{type = immutable dict, count = 3, 
entries => 
    0 : <CFString 0x7fc3537c8c80 [0x1091b5a40]>{contents = "message"} = <CFString 0x7fc3537d2740 [0x1091b5a40]>{contents = "INVALID_EMAIL"} 
    1 : errors = <CFArray 0x7fc3537ba570 [0x1091b5a40]>{type = immutable, count = 1, values = (
    0 : <CFBasicHash 0x7fc3537a9190 [0x1091b5a40]>{type = immutable dict, count = 3, 
entries => 
    0 : reason = invalid 
    1 : message = <CFString 0x7fc3537e7030 [0x1091b5a40]>{contents = "INVALID_EMAIL"} 
    2 : domain = global 
} 

)} 
    2 : code = <CFNumber 0xb000000000001903 [0x1091b5a40]>{value = +400, type = kCFNumberSInt64Type} 
} 
}}, error_name=ERROR_INTERNAL_ERROR, NSLocalizedDescription=An internal error has occurred, print and inspect the error details for more information.} 

Мой обновленный код:

if error.code == FIRAuthErrorCode.ErrorCodeInvalidEmail.rawValue { 
          Alert(title: "Error", message: "That is some funky email there. Try again") 
           .showOkay() 
         } else if error.code == FIRAuthErrorCode.ErrorCodeWeakPassword.rawValue { 
          Alert(title: "Error", message: "Password is too weak. Try 6 or more characters. Try again") 
           .showOkay() 
         } else { 
          print(error) 
         } 

ответ

3

Я обновил ответ на Swift 3 синтаксиса в соответствии с @ user2462805

Попробуйте это

FIRAuth.auth()?.createUserWithEmail(email, password: pwd) { (user, error) in 
     if let error = error { 

      if error._code == FIRAuthErrorCode.ErrorCodeInvalidEmail.rawValue { 
       //the error code goes here 
      } 
     } 
    } 
+0

Это работает, спасибо. Только у меня есть еще одна проблема, когда происходит ошибка с неправильным адресом электронной почты. В нем говорится: «Произошла внутренняя ошибка, распечатайте и просмотрите сведения об ошибках для получения дополнительной информации». и я реализовал для этого код, но он не запускается. – Kira

+0

похоже, что вы не единственный с этой ошибкой https://iosprogramming.xyz/firebase-3-2-0-internal-error-on-create-user/ –

+0

Ну, это отстой. Теперь, подождите, подождите, пока Firebase решит эту проблему? – Kira

Смежные вопросы