Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

處理 Firebase iOS 身份驗證錯誤

如果驗證方法完成回調收到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表示訪問鑰匙串時發生錯誤。該NSLocalizedFailureReasonErrorKeyNSUnderlyingErrorKey在田裡NSError.userInfo字典將包含您所遇到的錯誤的詳細信息。
FIRAuthErrorCodeInternalError表示發生了內部錯誤。請報告錯誤與整個NSError對象。

方法特定的錯誤代碼

FIRAuth

fetchProvidersForEmail:completion:

代碼意義
FIRAuthErrorCodeInvalidEmail表示電子郵件地址格式錯誤。

signInWithEmail:password:completion:

代碼意義
FIRAuthErrorCodeOperationNotAllowed表示未啟用電子郵件和密碼帳戶。在的驗證部分,使他們火力地堡控制台
FIRAuthErrorCodeInvalidEmail表示電子郵件地址格式錯誤。
FIRAuthErrorCodeUserDisabled表示用戶的帳戶被禁用。
FIRAuthErrorCodeWrongPassword表示用戶嘗試使用錯誤的密碼登錄。

signInWithCredential:完成:

代碼意義
FIRAuthErrorCodeInvalidCredential表示提供的憑據無效。如果它已過期或格式錯誤,則可能會發生這種情況。
FIRAuthErrorCodeInvalidEmail表示電子郵件地址的格式不正確,如果證書的類型為EmailPasswordAuthCredential
FIRAuthErrorCodeOperationNotAllowed表示未啟用具有由憑據表示的身份提供者的帳戶。在的驗證部分,使他們火力地堡控制台
FIRAuthErrorCodeEmailAlreadyInUse表示憑據聲明的電子郵件(例如 Facebook 訪問令牌中的電子郵件)已被現有帳戶使用,無法使用此登錄方法進行身份驗證。呼叫fetchProvidersForEmail該用戶的電子郵件,然後促使他們與任何登錄返回提供商的登錄。如果設置了“每個電子郵件地址帳戶”,在啟用這個錯誤才會被拋出火力地堡控制台,在身份驗證設置。
FIRAuthErrorCodeUserDisabled表示用戶的帳戶被禁用。
FIRAuthErrorCodeWrongPassword表示一個錯誤的密碼,如果用戶試圖跡象,如果證書的類型為EmailPasswordAuthCredential

匿名登錄完成:

代碼意義
FIRAuthErrorCodeOperationNotAllowed表示未啟用匿名帳戶。在的驗證部分,使他們火力地堡控制台

signInWithCustomToken:完成:

代碼意義
FIRAuthErrorCodeInvalidCustomToken指示自定義令牌的驗證錯誤。
FIRAuthErrorCodeCustomTokenMismatch表示服務帳號和API密鑰屬於不同的項目。

createUserWithEmail:password:completion:

代碼意義
FIRAuthErrorCodeInvalidEmail表示電子郵件地址格式錯誤。
FIRAuthErrorCodeEmailAlreadyInUse表示用於嘗試註冊的電子郵件已經存在。呼叫fetchProvidersForEmail檢查哪個登錄機制使用這樣的用戶,並提示用戶與其中的一個登錄。
FIRAuthErrorCodeOperationNotAllowed表示未啟用電子郵件和密碼帳戶。在的認證單元使他們火力地堡控制台
FIRAuthErrorCodeWeakPassword表示嘗試設置被認為太弱的密碼。該NSLocalizedFailureReasonErrorKey在現場NSError.userInfo字典對象將包含可向用戶示出更詳細的解釋。

登出:

代碼意義
FIRAuthErrorCodeKeychainError表示訪問鑰匙串時發生錯誤。該NSLocalizedFailureReasonErrorKeyNSUnderlyingErrorKey在田裡NSError.userInfo字典將包含您所遇到的錯誤的詳細信息。

FIRUser

FIRUser 操作的常見錯誤

代碼意義
FIRAuthErrorCodeInvalidUserToken表示登錄用戶的刷新令牌(保存會話信息)無效。您必須提示用戶在此設備上再次登錄。
FIRAuthErrorCodeUserDisabled表示用戶的帳戶已被禁用並且無法再使用,直到在 Firebase 控制台的“用戶”面板中再次啟用。

reauthenticateWithCredential:completion:

代碼意義
FIRAuthErrorCodeInvalidCredential表示提供的憑據無效。如果它已過期或格式錯誤,則可能會發生這種情況。
FIRAuthErrorCodeInvalidEmail表示電子郵件地址的格式不正確,如果證書的類型為EmailPasswordAuthCredential
FIRAuthErrorCodeWrongPassword指出了一個不正確的密碼,如果用戶試圖重認證,如果認證是類型的EmailPasswordAuthCredential
FIRAuthErrorCodeUserMismatch表示已嘗試與非當前用戶的用戶重新進行身份驗證。
FIRAuthErrorCodeOperationNotAllowed表示未啟用具有由憑據表示的身份提供者的帳戶。在的驗證部分,使他們火力地堡控制台
FIRAuthErrorCodeEmailAlreadyInUse表示憑據聲明的電子郵件(例如 Facebook 訪問令牌中的電子郵件)已被現有帳戶使用,無法使用此登錄方法重新進行身份驗證。呼叫fetchProvidersForEmail該用戶的電子郵件,然後促使他們與任何登錄返回提供商的登錄。如果設置了“每個電子郵件地址帳戶”,在啟用這個錯誤才會被拋出火力地堡控制台,在身份驗證設置。
FIRAuthErrorCodeUserDisabled表示用戶的帳戶被禁用。

更新電子郵件:完成:

代碼意義
FIRAuthErrorCodeEmailAlreadyInUse表示該電子郵件已被另一個帳戶使用。
FIRAuthErrorCodeInvalidEmail表示電子郵件地址格式錯誤。
FIRAuthErrorCodeRequiresRecentLogin更新用戶的電子郵件是一項安全敏感操作,需要用戶最近登錄。此錯誤表示用戶最近登錄時間不夠。要解決問題,重新認證通過調用用戶reauthenticateWithCredential:completion:FIRUser

更新密碼:完成:

代碼意義
FIRAuthErrorCodeOperationNotAllowed表示管理員禁用了使用指定身份提供者的登錄。
FIRAuthErrorCodeRequiresRecentLogin更新用戶的密碼是一項安全敏感操作,需要用戶最近登錄。此錯誤表示用戶最近登錄時間不夠。要解決問題,重新認證通過調用用戶reauthenticateWithCredential:completion:FIRUser
FIRAuthErrorCodeWeakPassword表示嘗試設置被認為太弱的密碼。該NSLocalizedFailureReasonErrorKey在現場NSError.userInfo字典對象將包含可向用戶示出更詳細的解釋。

linkWithCredential:completion:

代碼意義
FIRAuthErrorCodeProviderAlreadyLinked表示嘗試鏈接已鏈接到此帳戶的類型的提供者。
FIRAuthErrorCodeCredentialAlreadyInUse表示嘗試與已與其他 Firebase 帳戶相關聯的憑據相關聯。
FIRAuthErrorCodeOperationNotAllowed表示未啟用具有由憑據表示的身份提供者的帳戶。在的驗證部分,使他們火力地堡控制台

這種方法也可能返回與相關的錯誤代碼updateEmail:completion:updatePassword:completion:FIRUser

unlinkFromProvider:完成:

代碼意義
FIRAuthErrorCodeNoSuchProvider表示嘗試取消與未鏈接到帳戶的提供商的鏈接。
FIRAuthErrorCodeRequiresRecentLogin更新電子郵件是一項安全敏感操作,需要用戶最近登錄。此錯誤表示用戶最近登錄時間不夠。要解決問題,重新認證通過調用用戶reauthenticateWithCredential:completion:FIRUser

sendEmailVerificationWithCompletion:

代碼意義
FIRAuthErrorCodeUserNotFound表示未找到用戶帳戶。

刪除完成:

代碼意義
FIRAuthErrorCodeRequiresRecentLogin刪除用戶帳戶是一項安全敏感操作,需要用戶最近登錄。此錯誤表示用戶最近登錄時間不夠。要解決問題,重新認證通過調用用戶reauthenticateWithCredential:completion:FIRUser