處理 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 key屬於不同的項目。

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