处理 Firebase Apple 平台身份验证错误
    
    
      
    
    
      
      使用集合让一切井井有条
    
    
      
      根据您的偏好保存内容并对其进行分类。
    
  
  
      
    
  
  
  
  
  
    
  
  
    
    
    
    
    
  
如果 Authentication 方法中的完成回调函数收到的 NSError 参数不是 nil,则表示出现了错误。如需在您的正式版代码中分派适当的错误处理逻辑,请查看下文中列出的通用错误代码和与特定方法相关的错误代码。
一些错误可以通过特定用户操作解决。例如,用户重新登录即可解决 FIRAuthErrorCodeUserTokenExpired 错误,用户提供正确密码即可解决 FIRAuthErrorCodeWrongPassword 错误。
除了 FIRAuthErrorCodeNetworkError 和 FIRAuthErrorCodeTooManyRequests 外,使用同样的参数重新尝试失败的操作无论如何都不会成功。请勿对操作在服务器端是否生效进行任何假设。
在调查或记录错误时,可以查阅 userInfo 字典。FIRAuthErrorNameKey 包含一个跨平台错误名称字符串,可用于识别错误。NSLocalizedDescriptionKey 则包含错误描述。此描述专门面向开发者,不适用于用户。NSUnderlyingErrorKey 包含引起相关错误的底层错误(如果存在底层错误)。
除上文列出的主要字段以外,您还可以在 userInfo 字典中找到有助于诊断错误的其他字段。
所有 API 方法通用的错误代码
| 代码 | 含义 | 
| FIRAuthErrorCodeNetworkError | 表示操作过程中发生了网络错误。 | 
| FIRAuthErrorCodeUserNotFound | 表示未找到用户账号。如果用户账号已删除,就可能会出现这个错误。 | 
| FIRAuthErrorCodeUserTokenExpired | 表示当前用户的令牌已过期。例如,用户可能在其他设备上更改了账号密码。您必须提示用户在此设备上重新登录。 | 
| FIRAuthErrorCodeTooManyRequests | 表示之前从调用方设备向 Firebase Authentication 服务器发出的请求数量异常,因此该请求已被阻止。请过一段时间再试。 | 
| FIRAuthErrorCodeInvalidAPIKey | 表示该应用配置了无效的 API 密钥。 | 
| FIRAuthErrorCodeAppNotAuthorized | 表示该应用无权利用所提供的 API 密钥来使用 Firebase Authentication。请转到 Google API 控制台,在凭据标签页下检查您正在使用的 API 密钥是否将您应用的软件包 ID 列入了白名单。 | 
| FIRAuthErrorCodeKeychainError | 表示访问密钥链时出错。 NSError.userInfo字典中的NSLocalizedFailureReasonErrorKey和NSUnderlyingErrorKey字段包含了关于出现的错误的详细信息。 | 
| FIRAuthErrorCodeInternalError | 表示发生了内部错误。请在报告错误时提供完整的 NSError对象。 | 
与特定方法相关的错误代码
FIRAuth
fetchProvidersForEmail:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeInvalidEmail | 表示电子邮件地址格式错误。 | 
signInWithEmail:password:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeOperationNotAllowed | 表示电子邮件和密码账号未启用。请在 Firebase 控制台的“Auth”部分将其启用。 | 
| FIRAuthErrorCodeInvalidEmail | 表示电子邮件地址格式错误。 | 
| FIRAuthErrorCodeUserDisabled | 表示该用户账号已停用。 | 
| FIRAuthErrorCodeWrongPassword | 表示用户尝试使用错误的密码登录。 | 
signInWithCredential:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeInvalidCredential | 表示提供的凭据无效。如果凭据已过期或格式错误,就可能会出现这个错误。 | 
| FIRAuthErrorCodeInvalidEmail | 如果凭据的类型为 EmailPasswordAuthCredential,则表示电子邮件地址格式错误。 | 
| FIRAuthErrorCodeOperationNotAllowed | 表示该凭据代表的身份提供方账号未启用。请在 Firebase 控制台的“Auth”部分将其启用。 | 
| FIRAuthErrorCodeEmailAlreadyInUse | 表示该凭据声明的电子邮件地址(例如,Facebook 访问令牌中的电子邮件地址)已被现有账号使用,无法使用此登录方法进行身份验证。为此用户的电子邮件调用 fetchProvidersForEmail,提示该用户使用返回的任一登录提供方账号登录。只有在 Firebase 控制台的 Authentication 设置下启用了“每个电子邮件地址一个账号”设置时才会出现这个错误。 | 
| FIRAuthErrorCodeUserDisabled | 表示该用户账号已停用。 | 
| FIRAuthErrorCodeWrongPassword | 如果凭据的类型为 EmailPasswordAuthCredential,则表示用户尝试使用错误的密码登录。 | 
signInAnonymouslyWithCompletion:
| 代码 | 含义 | 
| FIRAuthErrorCodeOperationNotAllowed | 表示未启用匿名账号。请在 Firebase 控制台的“Auth”部分将其启用。 | 
signInWithCustomToken:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeInvalidCustomToken | 表示自定义令牌发生了验证错误。 | 
| FIRAuthErrorCodeCustomTokenMismatch | 表示服务账号和 API 密钥分属不同的项目。 | 
createUserWithEmail:password:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeInvalidEmail | 表示电子邮件地址格式错误。 | 
| FIRAuthErrorCodeEmailAlreadyInUse | 表示用于尝试注册的电子邮件已经存在。调用 fetchProvidersForEmail检查该用户曾用过的登录机制,提示用户使用其中一种进行登录。 | 
| FIRAuthErrorCodeOperationNotAllowed | 表示电子邮件和密码账号未启用。请在 Firebase 控制台的“Authentication”部分将其启用。 | 
| FIRAuthErrorCodeWeakPassword | 表示尝试设置的密码强度太弱。 NSError.userInfo字典对象中的NSLocalizedFailureReasonErrorKey字段包含更详细的说明,可供用户查看。 | 
signOut:
| 代码 | 含义 | 
| FIRAuthErrorCodeKeychainError | 表示访问密钥链时出错。 NSError.userInfo字典中的NSLocalizedFailureReasonErrorKey和NSUnderlyingErrorKey字段包含了关于出现的错误的详细信息。 | 
FIRUser
FIRUser 操作常见错误
| 代码 | 含义 | 
| FIRAuthErrorCodeInvalidUserToken | 表示该已登录用户的刷新令牌(含会话信息)无效。您必须提示用户在此设备上重新登录。 | 
| FIRAuthErrorCodeUserDisabled | 表示该用户的账号已停用,只有在 Firebase 控制台的“用户”面板中重新启用后方可继续使用。 | 
reauthenticateWithCredential:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeInvalidCredential | 表示提供的凭据无效。如果凭据已过期或格式错误,就可能会出现这个错误。 | 
| FIRAuthErrorCodeInvalidEmail | 如果凭据的类型为 EmailPasswordAuthCredential,则表示电子邮件地址格式错误。 | 
| FIRAuthErrorCodeWrongPassword | 如果凭据的类型为 EmailPasswordAuthCredential,则表示用户尝试使用错误的密码重新进行验证。 | 
| FIRAuthErrorCodeUserMismatch | 表示尝试重新进行身份验证的用户不是当前用户。 | 
| FIRAuthErrorCodeOperationNotAllowed | 表示该凭据代表的身份提供方账号未启用。请在 Firebase 控制台的“Auth”部分将其启用。 | 
| FIRAuthErrorCodeEmailAlreadyInUse | 表示该凭据声明的电子邮件地址(例如,Facebook 访问令牌中的电子邮件地址)已被现有账号使用,无法使用此登录方法重新进行身份验证。为此用户的电子邮件调用 fetchProvidersForEmail,提示该用户使用返回的任一登录提供方账号登录。只有在 Firebase 控制台的 Authentication 设置下启用了“每个电子邮件地址一个账号”设置时才会出现这个错误。 | 
| FIRAuthErrorCodeUserDisabled | 表示该用户账号已停用。 | 
updateEmail:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeEmailAlreadyInUse | 表示电子邮件已被其他账号使用。 | 
| FIRAuthErrorCodeInvalidEmail | 表示电子邮件地址格式错误。 | 
| FIRAuthErrorCodeRequiresRecentLogin | 更新用户的电子邮件是一项涉及安全的操作,用户必须在近期内登录过才能执行。此错误表示该用户近期内未进行登录。如需解决这个问题,可以调用 FIRUser中的reauthenticateWithCredential:completion:重新对用户进行身份验证。 | 
updatePassword:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeOperationNotAllowed | 表示管理员已停用使用指定的身份提供方登录。 | 
| FIRAuthErrorCodeRequiresRecentLogin | 更新用户的密码是一项涉及安全的操作,用户必须在近期内登录过才能执行。此错误表示该用户近期内未进行登录。如需解决这个问题,可以调用 FIRUser中的reauthenticateWithCredential:completion:重新对用户进行身份验证。 | 
| FIRAuthErrorCodeWeakPassword | 表示尝试设置的密码强度太弱。 NSError.userInfo字典对象中的NSLocalizedFailureReasonErrorKey字段包含更详细的说明,可供用户查看。 | 
linkWithCredential:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeProviderAlreadyLinked | 表示尝试对已与此账号关联的某一类型的提供方进行关联。 | 
| FIRAuthErrorCodeCredentialAlreadyInUse | 表示尝试对已与其他 Firebase 账号关联的凭据进行关联。 | 
| FIRAuthErrorCodeOperationNotAllowed | 表示该凭据代表的身份提供方账号未启用。请在 Firebase 控制台的“Auth”部分将其启用。 | 
此方法可能还会返回与 FIRUser 上的 updateEmail:completion: 和 updatePassword:completion: 有关的错误代码。
unlinkFromProvider:completion:
| 代码 | 含义 | 
| FIRAuthErrorCodeNoSuchProvider | 表示尝试对未与此账号关联的某一提供方取消关联。 | 
| FIRAuthErrorCodeRequiresRecentLogin | 更新电子邮件是一项涉及安全的操作,用户必须在近期内登录过才能执行。此错误表示该用户近期内未进行登录。如需解决这个问题,可以调用 FIRUser中的reauthenticateWithCredential:completion:重新对用户进行身份验证。 | 
sendEmailVerificationWithCompletion:
| 代码 | 含义 | 
| FIRAuthErrorCodeUserNotFound | 表示未找到用户账号。 | 
deleteWithCompletion:
| 代码 | 含义 | 
| FIRAuthErrorCodeRequiresRecentLogin | 删除用户账号是一项涉及安全的操作,用户必须在近期内登录过才能执行。此错误表示该用户近期内未进行登录。如需解决这个问题,可以调用 FIRUser中的reauthenticateWithCredential:completion:重新对用户进行身份验证。 | 
  
  
  
  
    
  
 
  
    
    
      
       
    
    
  
  
  如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
  最后更新时间 (UTC):2025-10-30。
  
  
  
    
      [null,null,["最后更新时间 (UTC):2025-10-30。"],[],[]]