排查 Credential Manager 常见错误

本指南列出了与 Credential Manager 相关的常见错误代码和说明,并提供了一些有关其原因的信息。

错误代码和说明 原因

android.os.TransactionTooLargeException

这是由于已知问题导致的,在 Android 14 及更高版本上,当设备上存在多个 Google 帐户时,credentialManager.getCredential() API 无法显示登录对话框。此问题特别出现在 GetGoogleIdOption 中,而不是 GetSignInWithGoogleOption 中。此问题已在 Google Play 服务 24.40.XX 及更高版本中修复。

CreateCredentialCancellationExceptionGetCredentialCancellationException

密钥注册或检索被用户取消。

用户已选择不创建或使用凭据。您现在可以调整您的 UI 以提供替代登录方法或继续执行流程的后续步骤。

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:

注册期间无法创建密钥

当用户在注册期间关闭屏幕锁定对话框时,可能会出现此问题。

CreatePublicKeyDomException & GetPublicKeyCredentialDomException

密钥注册被用户取消。

密钥检索被用户取消。

在注册/检索密钥时,如果用户取消了指纹对话框,可能会出现此问题。

GetCredentialProviderConfigurationException & CreateCredentialProviderConfigurationException

getCredentialAsync 未找到提供程序依赖项

createCredentialAsync 未找到提供程序依赖项

缺少 androidx.credentials:credentials-play-services-auth:<latest-version> 依赖项。

GetCredentialUnsupportedExceptionCreateCredentialUnsupportedException

您的设备不支持凭据管理器

确保您的凭据库已更新到 1.2.1 或更高版本。

GetPublicKeyCredentialException

无法解密凭据

在注销并重新登录 Google 帐户后尝试使用密钥时,会出现此问题。指示您的用户在设备上重新登录其 Google 帐户。

NoCredentialException

未找到匹配的凭据

在设备上未找到匹配的凭据。如果用户之前未保存任何凭据,则这是预期的行为。

由于加密数据被锁定,无法创建密钥

用户需要重置其 Chrome 服务器端数据。除了保存的密码和密钥外,这些数据还包括书签和 Chrome 设置。有关 Chrome 存储哪些数据的更多信息,请访问 帐户中的 Chrome 数据

  1. 访问 chrome.google.com/sync
  2. 在底部,选择清除数据
  3. 在设备上,在 Chrome 中开启同步

登录失败:8:未知内部错误。

设备可能未正确设置 Google 帐户。密钥 JSON 的创建方式可能存在问题。仔细检查实现的准确性。

无法获取同步帐户

Google Play 服务 24.40.XX 及更高版本将提供更多信息丰富的错误代码。例如,调用者现在将收到取消错误消息,而不是“无法获取同步帐户”。