Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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