如果驗證方法上的完成回呼收到不為零的NSError
參數,則發生錯誤。要分派到生產程式碼中適當的錯誤處理邏輯,請根據下面列出的常見錯誤和方法特定錯誤檢查錯誤代碼。
某些錯誤可以透過特定的使用者操作來解決,例如, FIRAuthErrorCodeUserTokenExpired
可以透過使用者再次登入來解決, FIRAuthErrorCodeWrongPassword
可以透過要求使用者提供正確的密碼來解決。
除了FIRAuthErrorCodeNetworkError
或FIRAuthErrorCodeTooManyRequests
的情況外,使用相同參數重試失敗的操作永遠不會成功。不假設該操作在伺服器端是否生效。
調查或記錄錯誤時,請查看userInfo
字典。 FIRAuthErrorNameKey
包含可用於識別錯誤的跨平台錯誤名稱字串。 NSLocalizedDescriptionKey
包含錯誤的描述。此描述適用於開發人員,而不是使用者。 NSUnderlyingErrorKey
包含導致相關錯誤的底層錯誤(如果存在底層錯誤)。
除了上面列出的主要字段之外, userInfo
字典中還可能存在其他字段,您在診斷錯誤時可能會發現這些字段很有用。
所有 API 方法共有的錯誤代碼
程式碼 | 意義 |
---|
FIRAuthErrorCodeNetworkError | 表示操作過程中出現網路錯誤。 |
FIRAuthErrorCodeUserNotFound | 表示未找到用戶帳戶。如果使用者帳戶已被刪除,則可能會發生這種情況。 |
FIRAuthErrorCodeUserTokenExpired | 表示目前使用者的token已過期,例如使用者可能在其他裝置上變更了帳戶密碼。您必須提示使用者在此裝置上再次登入。 |
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 | 指示使用者嘗試使用錯誤密碼登入。 |
SignInWithCredential: 完成:
程式碼 | 意義 |
---|
FIRAuthErrorCodeInvalidCredential | 表示提供的憑證無效。如果它已過期或格式錯誤,則可能會發生這種情況。 |
FIRAuthErrorCodeInvalidEmail | 如果憑證的類型為EmailPasswordAuthCredential ,則表示電子郵件地址格式錯誤。 |
FIRAuthErrorCodeOperationNotAllowed | 表示未啟用具有由憑證表示的身分提供者的帳戶。在Firebase 控制台的 Auth 部分啟用它們。 |
FIRAuthErrorCodeEmailAlreadyInUse | 表示憑證所聲明的電子郵件(例如 Facebook 存取權杖中的電子郵件)已被現有帳號使用,無法使用此登入方法進行驗證。為該使用者的電子郵件呼叫fetchProvidersForEmail ,然後提示他們使用返回的任何登入提供者進行登入。只有在Firebase 控制台的驗證設定下啟用「每個電子郵件地址一個帳戶」設定時,才會引發此錯誤。 |
FIRAuthErrorCodeUserDisabled | 表示使用者的帳戶已停用。 |
FIRAuthErrorCodeWrongPassword | 如果憑證的類型為EmailPasswordAuthCredential ,則表示使用者嘗試使用錯誤密碼登入。 |
匿名登入完成:
程式碼 | 意義 |
---|
FIRAuthErrorCodeOperationNotAllowed | 表示未啟用匿名帳號。在Firebase 控制台的 Auth 部分啟用它們。 |
SignInWithCustomToken:完成:
程式碼 | 意義 |
---|
FIRAuthErrorCodeInvalidCustomToken | 指示自訂令牌的驗證錯誤。 |
FIRAuthErrorCodeCustomTokenMismatch | 表示服務帳號和API key屬於不同的項目。 |
createUserWithEmail:密碼:完成:
程式碼 | 意義 |
---|
FIRAuthErrorCodeInvalidEmail | 表示電子郵件地址格式錯誤。 |
FIRAuthErrorCodeEmailAlreadyInUse | 表示用於嘗試註冊的電子郵件已存在。呼叫fetchProvidersForEmail 檢查該使用者使用的登入機制,並提示使用者使用其中一種登入機制。 |
FIRAuthErrorCodeOperationNotAllowed | 表示電子郵件和密碼帳戶未啟用。在Firebase 控制台的「身份驗證」部分啟用它們。 |
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 欄位將包含可以向使用者顯示的更詳細的解釋。 |
linkWithCredential: 完成:
程式碼 | 意義 |
---|
FIRAuthErrorCodeProviderAlreadyLinked | 表示嘗試連結已連結到此帳戶的類型的提供者。 |
FIRAuthErrorCodeCredentialAlreadyInUse | 表示嘗試連結已與其他 Firebase 帳戶連結的憑證。 |
FIRAuthErrorCodeOperationNotAllowed | 表示未啟用具有由憑證表示的身分提供者的帳戶。在Firebase 控制台的 Auth 部分啟用它們。 |
此方法也可能傳回與FIRUser
上的updateEmail:completion:
和updatePassword:completion:
相關的錯誤代碼。
unlinkFromProvider:完成:
程式碼 | 意義 |
---|
FIRAuthErrorCodeNoSuchProvider | 表示嘗試取消連結未連結到該帳戶的提供者。 |
FIRAuthErrorCodeRequiresRecentLogin | 更新電子郵件是一項安全敏感操作,需要使用者最近登入。此錯誤表示使用者最近沒有登入。若要解決此問題,請透過在FIRUser 上呼叫reauthenticateWithCredential:completion: 重新驗證使用者。 |
發送電子郵件驗證完成:
程式碼 | 意義 |
---|
FIRAuthErrorCodeUserNotFound | 表示未找到用戶帳戶。 |
完成後刪除:
程式碼 | 意義 |
---|
FIRAuthErrorCodeRequiresRecentLogin | 刪除使用者帳號是一項安全敏感操作,需要使用者最近登入。此錯誤表示使用者最近沒有登入。若要解決此問題,請透過在FIRUser 上呼叫reauthenticateWithCredential:completion: 重新驗證使用者。 |