排查 Credential Manager 的常见错误

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

错误代码和说明 原因

android.os.TransactionTooLargeException

这是由一个已知问题导致的:当设备上存在多个 Google 账号时,Android 14 及更高版本上的 credentialManager.getCredential() API 会失败,无法显示登录对话框。此问题仅在 GetGoogleIdOption 中出现,而不会在 GetSignInWithGoogleOption 中出现。此问题在 Google Play 服务 24.40.XX 及更高版本中已得到修复。

CreateCredentialCancellationExceptionGetCredentialCancellationException

用户取消了通行密钥注册或检索。

用户选择不创建或不使用凭据。您现在可以调整界面以提供备用登录方法,或继续执行流程中的后续步骤。

CreateCredentialCustomExceptionGetCredentialCustomException

使用第三方 SDK 通过派生自 CreateCustomCredentialRequestGetCustomCredentialOption 的请求对象进行 API 调用时,您可能会遇到错误。如果发生这种情况,请检查 SDK 中是否有与 e.type 匹配的自定义异常类型常量。如果未找到匹配项,则可以放心地丢弃或记录异常。

CreateCredentialInterruptedExceptionGetCredentialInterruptedException

操作可能因用户转到设置以重新配置密码管理工具而中断。中断可能还由其他原因造成。请再次尝试拨打电话。

CreateCredentialUnknownException

保存密码期间,点按一下即可找到密码失败响应 16:[28431] Android 自动填充功能可能会提示用户,因此跳过密码保存。

仅当 Google 是指定的自动填充提供程序时,此错误才会影响 Android 13 及更低版本。在这种情况下,用户会收到自动填充功能发出的保存提示,并且密码会存储在 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 中的同步功能

On Begin Sign In Failure: 8:未知内部错误。

设备可能未正确设置 Google 账号。 通行密钥 JSON 的创建方式可能存在问题。 请仔细检查植入方式,确保准确无误。

无法获取同步账号

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