如果 Authentication 方法的完成回调接收到一个非 nil 的NSError
参数,则发生错误。要在生产代码中分派到适当的错误处理逻辑,请检查错误代码与下面列出的常见错误和特定于方法的错误。
某些错误可以通过特定的用户操作来解决,例如, FIRAuthErrorCodeUserTokenExpired
可以通过重新登录用户来解决,而FIRAuthErrorCodeWrongPassword
可以通过要求用户提供正确的密码来解决。
除了FIRAuthErrorCodeNetworkError
或FIRAuthErrorCodeTooManyRequests
的情况外,使用相同参数重试失败的操作永远不会成功。不假设操作是否在服务器端生效。
调查或记录错误时,请查看userInfo
字典。 FIRAuthErrorNameKey
包含可用于识别错误的跨平台错误名称字符串。 NSLocalizedDescriptionKey
包含错误的描述。此描述是针对开发人员的,而不是针对用户的。如果存在潜在错误,则NSUnderlyingErrorKey
包含导致相关错误的潜在错误。
除了上面列出的主要字段之外, userInfo
字典中可能还有其他字段,您可能会发现它们在诊断错误时很有用。
所有 API 方法共有的错误代码
代码 | 意义 |
---|
FIRAuthErrorCodeNetworkError | 表示操作过程中发生网络错误。 |
FIRAuthErrorCodeUserNotFound | 表示未找到用户帐户。如果用户帐户已被删除,则可能会发生这种情况。 |
FIRAuthErrorCodeUserTokenExpired | 表示当前用户的令牌已过期,例如,用户可能在另一台设备上更改了帐户密码。您必须提示用户在此设备上重新登录。 |
FIRAuthErrorCodeTooManyRequests | 表示在从调用方设备向 Firebase 身份验证服务器发出异常数量的请求后,该请求已被阻止。一段时间后重试。 |
FIRAuthErrorCodeInvalidAPIKey | 表示应用程序配置了无效的 API 密钥。 |
FIRAuthErrorCodeAppNotAuthorized | 表示应用无权通过提供的 API 密钥使用 Firebase 身份验证。转到 Google API 控制台并在凭据选项卡下检查您使用的 API 密钥是否已将您的应用程序的捆绑 ID 列入白名单。 |
FIRAuthErrorCodeKeychainError | 表示访问钥匙串时发生错误。 NSError.userInfo 字典中的NSLocalizedFailureReasonErrorKey 和NSUnderlyingErrorKey 字段将包含有关遇到的错误的更多信息。 |
FIRAuthErrorCodeInternalError | 表示发生内部错误。请用整个NSError 对象报告错误。 |
方法特定的错误代码
FIRAuth
fetchProvidersForEmail:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeInvalidEmail | 表示电子邮件地址格式错误。 |
signInWithEmail:密码:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeOperationNotAllowed | 表示未启用电子邮件和密码帐户。在Firebase 控制台的 Auth 部分启用它们。 |
FIRAuthErrorCodeInvalidEmail | 表示电子邮件地址格式错误。 |
FIRAuthErrorCodeUserDisabled | 表示用户的帐户已禁用。 |
FIRAuthErrorCodeWrongPassword | 表示用户尝试使用错误密码登录。 |
登录WithCredential:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeInvalidCredential | 表示提供的凭据无效。如果它已过期或格式不正确,则可能会发生这种情况。 |
FIRAuthErrorCodeInvalidEmail | 如果凭证的类型为EmailPasswordAuthCredential ,则表示电子邮件地址格式错误。 |
FIRAuthErrorCodeOperationNotAllowed | 表示未启用具有由凭据表示的身份提供者的帐户。在Firebase 控制台的 Auth 部分启用它们。 |
FIRAuthErrorCodeEmailAlreadyInUse | 表示凭据声明的电子邮件(例如 Facebook 访问令牌中的电子邮件)已被现有帐户使用,无法使用此登录方法对其进行身份验证。为此用户的电子邮件调用fetchProvidersForEmail ,然后提示他们使用返回的任何登录提供程序登录。只有在Firebase 控制台的身份验证设置下启用了“每个电子邮件地址一个帐户”设置时,才会引发此错误。 |
FIRAuthErrorCodeUserDisabled | 表示用户的帐户已禁用。 |
FIRAuthErrorCodeWrongPassword | 如果凭据的类型为EmailPasswordAuthCredential ,则表示用户尝试使用错误的密码登录。 |
signInAnonymouslyWithCompletion:
代码 | 意义 |
---|
FIRAuthErrorCodeOperationNotAllowed | 表示未启用匿名帐户。在Firebase 控制台的 Auth 部分启用它们。 |
登录WithCustomToken:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeInvalidCustomToken | 指示自定义令牌的验证错误。 |
FIRAuthErrorCodeCustomTokenMismatch | 表示服务帐号和 API 密钥属于不同的项目。 |
createUserWithEmail:密码:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeInvalidEmail | 表示电子邮件地址格式错误。 |
FIRAuthErrorCodeEmailAlreadyInUse | 表示用于尝试注册的电子邮件已存在。调用fetchProvidersForEmail 以检查该用户使用了哪些登录机制,并提示用户使用其中一种登录。 |
FIRAuthErrorCodeOperationNotAllowed | 表示未启用电子邮件和密码帐户。在Firebase 控制台的 Authentication 部分启用它们。 |
FIRAuthErrorCodeWeakPassword | 表示尝试设置被认为太弱的密码。 NSError.userInfo 字典对象中的NSLocalizedFailureReasonErrorKey 字段将包含可以显示给用户的更详细的解释。 |
登出:
代码 | 意义 |
---|
FIRAuthErrorCodeKeychainError | 表示访问钥匙串时发生错误。 NSError.userInfo 字典中的NSLocalizedFailureReasonErrorKey 和NSUnderlyingErrorKey 字段将包含有关遇到的错误的更多信息。 |
FIRUser
FIRUser 操作的常见错误
代码 | 意义 |
---|
FIRAuthErrorCodeInvalidUserToken | 表示登录用户的保存会话信息的刷新令牌无效。您必须提示用户在此设备上重新登录。 |
FIRAuthErrorCodeUserDisabled | 表示用户的帐户已被禁用,并且在从 Firebase 控制台的“用户”面板中再次启用之前无法再使用。 |
reauthenticateWithCredential:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeInvalidCredential | 表示提供的凭据无效。如果它已过期或格式不正确,则可能会发生这种情况。 |
FIRAuthErrorCodeInvalidEmail | 如果凭证的类型为EmailPasswordAuthCredential ,则表示电子邮件地址格式错误。 |
FIRAuthErrorCodeWrongPassword | 如果凭据的类型为EmailPasswordAuthCredential ,则表示用户尝试使用不正确的密码重新进行身份验证。 |
FIRAuthErrorCodeUserMismatch | 表示尝试使用不是当前用户的用户重新进行身份验证。 |
FIRAuthErrorCodeOperationNotAllowed | 表示未启用具有由凭据表示的身份提供者的帐户。在Firebase 控制台的 Auth 部分启用它们。 |
FIRAuthErrorCodeEmailAlreadyInUse | 表示凭据声明的电子邮件(例如 Facebook 访问令牌中的电子邮件)已被现有帐户使用,无法使用此登录方法重新验证。为此用户的电子邮件调用fetchProvidersForEmail ,然后提示他们使用返回的任何登录提供程序登录。只有在Firebase 控制台的身份验证设置下启用了“每个电子邮件地址一个帐户”设置时,才会引发此错误。 |
FIRAuthErrorCodeUserDisabled | 表示用户的帐户已禁用。 |
更新电子邮件:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeEmailAlreadyInUse | 表示电子邮件已被另一个帐户使用。 |
FIRAuthErrorCodeInvalidEmail | 表示电子邮件地址格式错误。 |
FIRAuthErrorCodeRequiresRecentLogin | 更新用户的电子邮件是一项安全敏感操作,需要用户最近登录。此错误表明用户最近登录的时间不够长。要解决此问题,请通过在FIRUser 上调用reauthenticateWithCredential:completion: 来重新验证用户。 |
更新密码:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeOperationNotAllowed | 表示管理员禁用了使用指定身份提供者的登录。 |
FIRAuthErrorCodeRequiresRecentLogin | 更新用户密码是一项安全敏感操作,需要用户最近登录。此错误表明用户最近登录的时间不够长。要解决此问题,请通过在FIRUser 上调用reauthenticateWithCredential:completion: 来重新验证用户。 |
FIRAuthErrorCodeWeakPassword | 表示尝试设置被认为太弱的密码。 NSError.userInfo 字典对象中的NSLocalizedFailureReasonErrorKey 字段将包含可以显示给用户的更详细的解释。 |
链接WithCredential:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeProviderAlreadyLinked | 表示尝试链接已链接到此帐户的类型的提供者。 |
FIRAuthErrorCodeCredentialAlreadyInUse | 表示尝试与已与其他 Firebase 帐户关联的凭据关联。 |
FIRAuthErrorCodeOperationNotAllowed | 表示未启用具有由凭据表示的身份提供者的帐户。在Firebase 控制台的 Auth 部分启用它们。 |
此方法还可能返回与 FIRUser 上的FIRUser
updateEmail:completion:
和updatePassword:completion:
相关的错误代码。
unlinkFromProvider:完成:
代码 | 意义 |
---|
FIRAuthErrorCodeNoSuchProvider | 表示尝试取消链接未链接到帐户的提供程序。 |
FIRAuthErrorCodeRequiresRecentLogin | 更新电子邮件是一项安全敏感操作,需要用户最近登录。此错误表明用户最近登录的时间不够长。要解决此问题,请通过在FIRUser 上调用reauthenticateWithCredential:completion: 来重新验证用户。 |
sendEmailVerificationWithCompletion:
代码 | 意义 |
---|
FIRAuthErrorCodeUserNotFound | 表示未找到用户帐户。 |
删除完成:
代码 | 意义 |
---|
FIRAuthErrorCodeRequiresRecentLogin | 删除用户帐户是一项安全敏感操作,需要用户最近登录。此错误表明用户最近登录的时间不够长。要解决此问题,请通过在FIRUser 上调用reauthenticateWithCredential:completion: 来重新验证用户。 |