排解常見的憑證管理工具錯誤

本指南列出與憑證管理工具相關的常見錯誤代碼和說明,並提供造成這些錯誤的部分原因。

錯誤代碼和說明 原因

android.os.TransactionTooLargeException

這是已知問題所致,當裝置上有多個 Google 帳戶時,Android 14 以上版本的 credentialManager.getCredential() API 無法顯示登入對話方塊。這個問題只會出現在 GetGoogleIdOption,不會出現在 GetSignInWithGoogleOption。這個問題已在 Google Play 服務 24.40.XX 以上版本中修正。

CreateCredentialCancellationException

使用者已取消註冊或擷取密碼金鑰。

使用者選擇不建立或使用憑證。現在您可以調整 UI,提供替代登入方式,或繼續執行程序中的下一個步驟。

GetCredentialCancellationException

由於未取得必要的使用者授權,憑證擷取程序已終止。使用者手動取消登入流程時,最常發生這種情況,但這也可能表示要求因技術限制而未獲授權。由於這項錯誤表示缺少同意聲明,請勿自動重試要求,以免造成使用者體驗不佳。不過,開發人員應監控這項例外狀況的發生頻率。如果「取消」次數偏高,可能表示設定錯誤 (例如缺少或錯誤的範圍),導致授權使用者介面無法順利完成。如果發現異常趨勢,請檢查要求參數和 [信賴方][2] 設定。

注意:錯誤訊息會因憑證類型而異:

  • 如果是密碼金鑰,錯誤訊息可能是「使用者已取消密碼金鑰註冊或擷取作業」。
  • 如果是「使用 Google 帳戶登入」,錯誤訊息可能是「使用者已取消活動」。

CreateCredentialCustomExceptionGetCredentialCustomException

使用第三方 SDK 透過要求物件 (子類別為 CreateCustomCredentialRequestGetCustomCredentialOption) 進行 API 呼叫時,可能會發生錯誤。如果發生這種情況,請檢查 SDK 中是否有與 e.type 相符的自訂例外狀況類型常數。如果找不到相符項目,可以安全地捨棄或記錄例外狀況。

CreateCredentialInterruptedExceptionGetCredentialInterruptedException

使用者前往設定重新設定密碼管理工具,因此作業可能已中斷。其他原因也可能導致中斷。請再試一次。

CreateCredentialUnknownException

儲存密碼時,輕觸一下即可找到密碼失敗回應 16:[28431] Android 自動填入功能可能會提示使用者,因此略過密碼儲存程序。

這項錯誤只會影響 Android 13 以下版本,且只在 Google 是指定的自動填入功能提供者時才會發生。遇到此情況時,自動填入功能會向使用者顯示儲存提示,並將密碼儲存至 Google 密碼管理工具。重要事項:透過 Google 自動填入功能儲存的憑證會與 Credential Manager API 雙向同步。因此,您可以放心忽略這個錯誤。

CreatePublicKeyCredentialDomException 和 GetPublicKeyCredentialDomException

DOM 例外狀況可能包含更具體的 domError。如需更多詳細資料,請將其對應至 WebAuthn DomException

CreatePublicKeyCredentialDomException 和 GetPublicKeyCredentialDomException

無法驗證傳入要求。

密碼管理工具的伺服器無法辨識應用程式的套件 ID。這表示伺服器端整合可能發生問題,尤其是數位資產連結設定。請仔細檢查資產連結檔案中的套件 ID 和 SHA 是否正確。

CreatePublicKeyCredentialDomException

註冊期間無法建立金鑰

如果使用者在註冊期間關閉螢幕鎖定對話方塊,就可能發生這個問題。

CreateCredentialNoCreateOptionException

這項例外狀況表示使用者未設定有效的密碼管理工具。這個錯誤並非使用者手動取消流程所致,而是其他原因造成的失敗。

CreatePublicKeyDomException 和 GetPublicKeyCredentialDomException

使用者已取消密碼金鑰註冊

使用者已取消擷取密碼金鑰。

如果使用者在註冊 / 擷取密碼金鑰時關閉指紋對話方塊,就可能發生這個問題。

GetCredentialProviderConfigurationException 和 CreateCredentialProviderConfigurationException

找不到 getCredentialAsync 的供應商依附元件

找不到 createCredentialAsync 的供應商依附元件

缺少 androidx.credentials:credentials-play-services-auth:<latest-version> 依附元件。

GetCredentialUnsupportedExceptionCreateCredentialUnsupportedException

裝置不支援憑證管理工具

確認憑證程式庫已更新至 1.2.1 以上版本。

GetPublicKeyCredentialException

無法解密憑證

登出 Google 帳戶後再登入,嘗試使用密碼金鑰時就會發生這個問題。請使用者在裝置上重新登入 Google 帳戶。

NoCreateOptionException

如果使用者未在裝置上設定任何密碼金鑰憑證,或未設定密碼管理工具,就會發生這種例外狀況,這是預期行為。

NoCredentialException

找不到相符的憑證

在下列情況下會發生這項例外狀況:

  • setFilterByAuthorizedAccounts 設為 true,但裝置上沒有已授權的帳戶。
  • 裝置上沒有已登入的帳戶 (未新增任何帳戶,或帳戶需要重新驗證)。
  • 如果裝置上任何帳戶的登入提示已停用,系統就不會顯示底部功能表 UI。如要讓任何帳戶顯示底部功能表 UI,必須啟用這項全域設定 (位於「Google 帳戶設定」>「使用 Google 帳戶登入」)。這不會影響按鈕流程。

加密資料已鎖定,因此無法建立密碼金鑰

使用者需要重設 Chrome 伺服器端資料。這類資料包括書籤、Chrome 設定,以及已儲存的密碼和密碼金鑰。如要進一步瞭解 Chrome 儲存的資料,請前往「您帳戶中的 Chrome 資料」頁面。

  1. 前往 chrome.google.com/sync
  2. 選取底部的「清除資料」
  3. 在裝置上開啟 Chrome 同步功能

On Begin Sign In Failure: 8:未知的內部錯誤。

裝置可能尚未使用 Google 帳戶進行妥善設定。密碼金鑰 JSON 的建立方式可能有問題。請仔細檢查導入方式是否正確。

無法取得同步帳戶

Google Play 服務 24.40.XX 以上版本會提供更詳盡的錯誤代碼。舉例來說,來電者現在會收到取消錯誤訊息,而不是「無法取得同步帳戶」。