處理 Firebase Apple 平台驗證錯誤

如果 Authentication 方法上的完成回呼收到 NSError 引數 不是 nil,表示發生錯誤。派遣至適當的錯誤處理 檢查錯誤代碼,找出常見錯誤,並 特定方法的錯誤。

某些錯誤可以由特定使用者動作解決,例如 登入使用者即可解決 FIRAuthErrorCodeUserTokenExpired ,以及要求使用者提供 FIRAuthErrorCodeWrongPassword 正確的密碼

FIRAuthErrorCodeNetworkErrorFIRAuthErrorCodeTooManyRequests,正在重試失敗的作業 引數永遠不會成功不假設作業是否成功 生效後,從伺服器端開始

調查或記錄錯誤時,請查看 userInfo 字典。 FIRAuthErrorNameKey 包含可允許的跨平台錯誤名稱字串 用來識別錯誤 NSLocalizedDescriptionKey 包含錯誤的說明。這個 說明是供開發人員使用,而不是使用者。 NSUnderlyingErrorKey 包含導致錯誤的錯誤 問題。

除了上述主要欄位以外,您也可以在 userInfo 字典可協助您診斷錯誤。

所有 API 方法通用的錯誤代碼

程式碼 意義
FIRAuthErrorCodeNetworkError 表示作業期間發生網路錯誤。
FIRAuthErrorCodeUserNotFound 表示找不到使用者帳戶。如果使用者帳戶遭到刪除,就可能發生這種情況。
FIRAuthErrorCodeUserTokenExpired 表示目前使用者的權杖已過期,例如使用者可能已在其他裝置上變更帳戶密碼。您必須提示使用者在這部裝置上重新登入。
FIRAuthErrorCodeTooManyRequests 表示在呼叫端裝置對 Firebase Authentication 伺服器發出異常數量的要求後,該要求已經遭到封鎖。請稍後再試。
FIRAuthErrorCodeInvalidAPIKey 表示應用程式已設定無效的 API 金鑰。
FIRAuthErrorCodeAppNotAuthorized 表示應用程式無權透過提供的 API 金鑰使用 Firebase 驗證。前往 Google API 控制台,查看您目前使用的 API 金鑰憑證分頁,確認應用程式的軟體包 ID 已加入許可清單。
FIRAuthErrorCodeKeychainError 表示存取鑰匙圈時發生錯誤。NSError.userInfo 字典中的 NSLocalizedFailureReasonErrorKeyNSUnderlyingErrorKey 欄位會針對遇到的錯誤提供更多資訊。
FIRAuthErrorCodeInternalError 表示發生內部錯誤。請使用整個 NSError 物件回報錯誤

方法專屬的錯誤代碼

FIRAuth

feedProvidersForEmail:complete:

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

signInWithEmail:password:自動完成:

程式碼 意義
FIRAuthErrorCodeOperationNotAllowed 表示電子郵件和密碼帳戶尚未啟用。請前往 Firebase 控制台的「驗證」專區啟用。
FIRAuthErrorCodeInvalidEmail 表示電子郵件地址格式錯誤。
FIRAuthErrorCodeUserDisabled 表示使用者帳戶已停用。
FIRAuthErrorCodeWrongPassword 表示使用者嘗試以錯誤的密碼登入。

signInWithCredential:自動完成:

程式碼 意義
FIRAuthErrorCodeInvalidCredential 表示提供的憑證無效。如果訂單已過期或格式錯誤,就有可能會發生這種情況。
FIRAuthErrorCodeInvalidEmail 如果憑證是 EmailPasswordAuthCredential 類型,表示電子郵件地址格式錯誤。
FIRAuthErrorCodeOperationNotAllowed 表示帳戶並未啟用由憑證所代表的識別資訊提供者。請前往 Firebase 控制台的「驗證」專區啟用。
FIRAuthErrorCodeEmailAlreadyInUse 指出由憑證所聲明的電子郵件 (例如 Facebook 存取權杖中的電子郵件) 目前已有人使用,因此無法以這個登入方式進行驗證。針對這位使用者的電子郵件呼叫 fetchProvidersForEmail,然後提示使用者使用系統傳回的任一登入服務供應商登入。只有在「每個電子郵件地址一個帳戶」的情況下,系統才會擲回這個錯誤。設定已在 Firebase 控制台的「Authentication」設定中啟用。
FIRAuthErrorCodeUserDisabled 表示使用者帳戶已停用。
FIRAuthErrorCodeWrongPassword 表示使用者嘗試以錯誤的密碼登入 (如果憑證類型為 EmailPasswordAuthCredential)。

SignInAnonymouslyWithComplete:

程式碼 意義
FIRAuthErrorCodeOperationNotAllowed 表示匿名帳戶尚未啟用。請前往 Firebase 控制台的「驗證」專區啟用。

signInWithCustomToken:自動完成:

程式碼 意義
FIRAuthErrorCodeInvalidCustomToken 表示自訂權杖的驗證錯誤。
FIRAuthErrorCodeCustomTokenMismatch 表示服務帳戶和 API 金鑰分屬不同的專案。

createUserWithEmail:password:自動完成:

程式碼 意義
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 控制台的「驗證」專區啟用。
FIRAuthErrorCodeEmailAlreadyInUse 指出由憑證所聲明的電子郵件 (例如 Facebook 存取權杖中的電子郵件) 目前已有人使用,因此無法以這個登入方式重新驗證。針對這位使用者的電子郵件呼叫 fetchProvidersForEmail,然後提示使用者使用系統傳回的任一登入服務供應商登入。只有在「每個電子郵件地址一個帳戶」的情況下,系統才會擲回這個錯誤。設定已在 Firebase 控制台的「Authentication」設定中啟用。
FIRAuthErrorCodeUserDisabled 表示使用者帳戶已停用。

updateEmail:complete:

程式碼 意義
FIRAuthErrorCodeEmailAlreadyInUse 表示另一個帳戶已使用這個電子郵件地址。
FIRAuthErrorCodeInvalidEmail 表示電子郵件地址格式錯誤。
FIRAuthErrorCodeRequiresRecentLogin 更新使用者的電子郵件屬於安全性敏感作業,使用者必須近期登入才能進行。此錯誤表示使用者最近沒有登入一段時間。如要解決這個問題,請在 FIRUser 上叫用 reauthenticateWithCredential:completion:,重新驗證使用者。

updatePassword:complete:

程式碼 意義
FIRAuthErrorCodeOperationNotAllowed 表示管理員已停用使用指定識別資訊提供者的登入功能。
FIRAuthErrorCodeRequiresRecentLogin 更新使用者密碼屬於安全性敏感作業,使用者必須近期登入才能進行。此錯誤表示使用者最近沒有登入一段時間。如要解決這個問題,請在 FIRUser 上叫用 reauthenticateWithCredential:completion:,重新驗證使用者。
FIRAuthErrorCodeWeakPassword 表示嘗試設定的密碼強度太弱。NSError.userInfo 字典物件中的 NSLocalizedFailureReasonErrorKey 欄位會包含更多向使用者顯示的詳細說明。

linkWithCredential:自動完成:

程式碼 意義
FIRAuthErrorCodeProviderAlreadyLinked 表示嘗試連結已連結至此帳戶類型的提供者。
FIRAuthErrorCodeCredentialAlreadyInUse 表示嘗試連結的憑證已連結至其他 Firebase 帳戶。
FIRAuthErrorCodeOperationNotAllowed 表示帳戶並未啟用由憑證所代表的識別資訊提供者。請前往 Firebase 控制台的「驗證」專區啟用。

這個方法也可能會傳回與 updateEmail:completion:updatePassword:completion: (FIRUser)。

LinkFromProvider:complete:

程式碼 意義
FIRAuthErrorCodeNoSuchProvider 表示嘗試取消連結未連結到帳戶的供應商。
FIRAuthErrorCodeRequiresRecentLogin 更新電子郵件屬於安全性敏感作業,使用者必須近期登入才能更新。此錯誤表示使用者最近沒有登入一段時間。如要解決這個問題,請在 FIRUser 上叫用 reauthenticateWithCredential:completion:,重新驗證使用者。

sendEmailVerificationWithComplete:

程式碼 意義
FIRAuthErrorCodeUserNotFound 表示找不到使用者帳戶。

deleteWithCompleted:

程式碼 意義
FIRAuthErrorCodeRequiresRecentLogin 刪除使用者帳戶屬於安全性敏感作業,使用者必須近期登入才能進行。此錯誤表示使用者最近沒有登入一段時間。如要解決這個問題,請在 FIRUser 上叫用 reauthenticateWithCredential:completion:,重新驗證使用者。