如果 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: 來重新驗證用戶。 |