Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

处理 Firebase Apple 平台身份验证错误

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

如果 Authentication 方法的完成回调接收到一个非 nil 的NSError参数,则发生错误。要在生产代码中分派到适当的错误处理逻辑,请检查错误代码与下面列出的常见错误和特定于方法的错误。

某些错误可以通过特定的用户操作来解决,例如, FIRAuthErrorCodeUserTokenExpired可以通过重新登录用户来解决,而FIRAuthErrorCodeWrongPassword可以通过要求用户提供正确的密码来解决。

除了FIRAuthErrorCodeNetworkErrorFIRAuthErrorCodeTooManyRequests的情况外,使用相同参数重试失败的操作永远不会成功。不假设操作是否在服务器端生效。

调查或记录错误时,请查看userInfo字典。 FIRAuthErrorNameKey包含可用于识别错误的跨平台错误名称字符串。 NSLocalizedDescriptionKey包含错误的描述。此描述是针对开发人员的,而不是针对用户的。如果存在潜在错误,则NSUnderlyingErrorKey包含导致相关错误的潜在错误。

除了上面列出的主要字段之外, userInfo字典中可能还有其他字段,您可能会发现它们在诊断错误时很有用。

所有 API 方法共有的错误代码

代码意义
FIRAuthErrorCodeNetworkError表示操作过程中发生网络错误。
FIRAuthErrorCodeUserNotFound表示未找到用户帐户。如果用户帐户已被删除,则可能会发生这种情况。
FIRAuthErrorCodeUserTokenExpired表示当前用户的令牌已过期,例如,用户可能在另一台设备上更改了帐户密码。您必须提示用户在此设备上重新登录。
FIRAuthErrorCodeTooManyRequests表示在从调用方设备向 Firebase 身份验证服务器发出异常数量的请求后,该请求已被阻止。一段时间后重试。
FIRAuthErrorCodeInvalidAPIKey表示应用程序配置了无效的 API 密钥。
FIRAuthErrorCodeAppNotAuthorized表示应用无权通过提供的 API 密钥使用 Firebase 身份验证。转到 Google API 控制台并在凭据选项卡下检查您使用的 API 密钥是否已将您的应用程序的捆绑 ID 列入白名单。
FIRAuthErrorCodeKeychainError表示访问钥匙串时发生错误。 NSError.userInfo字典中的NSLocalizedFailureReasonErrorKeyNSUnderlyingErrorKey字段将包含有关遇到的错误的更多信息。
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字典中的NSLocalizedFailureReasonErrorKeyNSUnderlyingErrorKey字段将包含有关遇到的错误的更多信息。

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:来重新验证用户。