Firebase 3.2.0 – 创build用户的内部错误

我刚刚使用Firebase 3.2.0启动了一个新项目(Swift 2.2; iOS 9; Xcode 7.3.1),并且在input无效的电子邮件和弱密码时,作为我的授权/注册过程的一部分,出现以下错误:

NSError

 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.} 

…和我的代码如下….

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: .... 

执行命中signInWithEmail()中的.ErrorCodeUserNotFound大小写。 然后它在createUserWithEmail()中触发默认情况。

从文档看来好像在createUserWithEmail()函数中有一个INVALID_EMAIL错误键,但是,它似乎是抛出一个内部错误而不是触及InvalidEmail错误的情况。

三个问题:

  1. 我有一个可接受的stream程在这里signIn失败导致createUser?
  2. 错误的真正原因是什么?
  3. 我怎样才能解决它?

提前致谢。

为了将来的参考,我提出了上述错误的错误,Firebase / Google已经确认它将在SDK的下一个版本中得到解决。

我遇到了同样的问题,并且发现我甚至无法通过Firebase控制台添加用户。 奇怪的是,虽然,我启用比禁用谷歌login,我能够手动添加一个用户。 所以我试图用createUserWithEmail创build一个用户,它工作。

您可能要尝试启用和禁用电子邮件function的login,这可能会重置Firebase方面的一些设置来解决问题。 这个“解决方法”使我相信问题出在他们的服务器端而不是SDK。

签出此帖: https : //stackoverflow.com/a/38076718您可以通过在Google控制台上激活Identity Toolkit API来解决问题。