如果应用使用 Play Integrity API 发出请求并且调用失败,则会返回错误代码。返回的错误代码类型取决于请求的类型。
- 标准请求:API 返回 StandardIntegrityErrorCode。
- 经典请求:API 返回 IntegrityErrorCode。
重试策略
对于在后台发生且在用户处于会话期间不影响用户体验的 Play Integrity 操作,请使用指数退避。
例如,在确认新购买时实现此功能是合适的,因为此操作可以在后台发生,如果发生错误,则无需实时确认。
第一次失败后,先等待 5 秒,然后再重试。
使用最大尝试次数作为退出条件实现重试策略,每次尝试时都以指数方式增加延迟(10 秒、20 秒)。
在执行这些重试尝试时,请检查网络连接,并且不要使设备过载。
如果在三次重试尝试后仍然看到错误,则将结果视为客户端已失败所有完整性检查。错误可能由于多种原因造成,包括(但不限于):设备过载、网络连接问题或攻击者的企图。
Java 库的错误代码值
原生库的其他错误代码值
可重试的错误代码
这些错误的原因有时是由于瞬态情况造成的,因此您应该重试调用。
NETWORK_ERROR
(错误代码 -3)
此错误表明设备和 Play 系统之间的网络连接存在问题。
可能的解决方案
要恢复,请要求用户检查网络连接,并根据触发错误的操作使用简单的重试或指数退避。
另请参阅
经典请求的 NETWORK_ERROR
。
TOO_MANY_REQUESTS
(错误代码 -8)
调用应用向 API 发出的请求过多,已被限流。
可能的解决方案
- 请求 增加每日最大 请求数量
- 使用指数退避重试。
另请参阅
经典请求的 TOO_MANY_REQUESTS
。
GOOGLE_SERVER_UNAVAILABLE
(错误代码 -12)
未知的内部 Google 服务器错误。
可能的解决方案
使用指数退避重试。如果持续失败,请考虑 提交错误报告。
另请参阅
经典请求的 GOOGLE_SERVER_UNAVAILABLE
。
CLIENT_TRANSIENT_ERROR
(错误代码 -18)
客户端设备上发生了瞬态错误。
对于标准 API 请求,此功能已在 Kotlin 和 Java 版 Play Integrity API 库 1.3.0 版及以上版本、Unity 版 Google Play Integrity 插件 1.3.0 版及以上版本和 Play Core Native SDK 1.13.0 版及以上版本中提供支持。
可能的解决方案
使用指数退避重试。
另请参阅
经典请求的错误代码为 CLIENT_TRANSIENT_ERROR
。
注意:使用经典 API 请求时报告的返回值为 -17。
INTERNAL_ERROR
(错误代码 -100)
未知内部错误。
可能的解决方案
请使用指数退避策略重试。如果始终失败,请考虑提交错误报告。
另请参阅
经典请求的错误代码为 INTERNAL_ERROR
。
STANDARD_INTEGRITY_INTERNAL_ERROR
(错误代码 -100)
未知内部错误。
可能的解决方案
请使用指数退避策略重试。如果始终失败,请考虑提交错误报告。
另请参阅
请参阅经典请求的 INTEGRITY_INTERNAL_ERROR
。
STANDARD_INTEGRITY_INITIALIZATION_FAILED
(错误代码 -102)
标准 Integrity API 初始化失败。
可能的解决方案
请使用指数退避策略重试。如果始终失败,请考虑提交错误报告。
另请参阅
请参阅经典请求的 INTEGRITY_INITIALIZATION_FAILED
。
不可重试的错误代码
自动重试在这种情况下不太可能有所帮助。但是,如果用户解决了导致问题的情况,手动重试可能会有所帮助。例如,如果用户将其 Play 商店版本更新到受支持的版本,则可以手动重试初始操作。
API_NOT_AVAILABLE
(错误代码 -1)
设备上安装的 Play 商店版本可能较旧,并且 Integrity API 不可用。另一种可能性是 Google Play Console 中未启用 Integrity API。
可能的解决方案
- 请确保已在 Google Play Console 中启用 Integrity API。
- 请用户更新 Play 商店。
另请参阅
请参阅经典请求的 API_NOT_AVAILABLE
。
PLAY_STORE_NOT_FOUND
(错误代码 -2)
设备上未找到官方 Play 商店应用。
可能的解决方案
请用户安装或启用 Google Play 商店。
另请参阅
请参阅经典请求的 PLAY_STORE_NOT_FOUND
。
PLAY_STORE_ACCOUNT_NOT_FOUND
(错误代码 -4)
注意:这仅通过 IntegrityErrorCode
向经典请求报告。
设备上未找到 Play 商店帐号。请注意,Play Integrity API 现在支持未经身份验证的请求。此错误代码仅用于缺少支持的较旧 Play 商店版本。
可能的解决方案
请用户更新并登录 Google Play 商店。
APP_NOT_INSTALLED
(错误代码 -5)
调用应用未安装。出现问题(可能是攻击)。
可能的解决方案
无法操作。将结果视为客户端已失败所有完整性检查。
另请参阅
请参阅经典请求的 APP_NOT_INSTALLED
。
PLAY_SERVICES_NOT_FOUND
(错误代码 -6)
Play 服务不可用或需要更新。
可能的解决方案
请用户安装、更新或启用 Play 服务。
另请参阅
请参阅经典请求的 APP_NOT_INSTALLED
。
APP_UID_MISMATCH
(错误代码 -7)
调用应用 UID(用户 ID)与包管理器中的 UID 不匹配。
可能的解决方案
无法操作。将结果视为客户端已失败所有完整性检查。
另请参阅
请参阅经典请求的 APP_UID_MISMATCH
。
CANNOT_BIND_TO_SERVICE
(错误代码 -9)
绑定到 Play 商店中的服务失败。这可能是由于设备上安装了旧版 Play 商店。
可能的解决方案
请用户更新 Google Play 商店。
另请参阅
请参阅经典请求的 CANNOT_BIND_TO_SERVICE
。
NONCE_TOO_SHORT
(错误代码 -10)
注意:这仅通过 IntegrityErrorCode
向经典请求报告。
Nonce 长度太短。Nonce 必须至少为 16 个字节(在 base64 编码之前)。
可能的解决方案
请使用更长的 Nonce 重试。
NONCE_TOO_LONG
(错误代码 -11)
注意:这仅通过 IntegrityErrorCode
向经典请求报告。
Nonce 长度太长。Nonce 必须小于 500 个字节(在 base64 编码之前)。
可能的解决方案
请使用更短的 Nonce 重试。
NONCE_IS_NOT_BASE64
(错误代码 -13)
注意:这仅通过 IntegrityErrorCode
向经典请求报告。
Nonce 未编码为 base64 网络安全无换行符字符串。
可能的解决方案
请使用正确格式的 Nonce 重试。
PLAY_STORE_VERSION_OUTDATED
(错误代码 -14)
需要更新 Google Play 商店应用。
可能的解决方案
请用户更新 Google Play 商店。
另请参阅
请参阅经典请求的 PLAY_STORE_VERSION_OUTDATED
。
PLAY_SERVICES_VERSION_OUTDATED
(错误代码 -15)
需要更新 Google Play 服务。
可能的解决方案
请用户更新 Google Play 服务。
另请参阅
请参阅经典请求的 PLAY_SERVICES_VERSION_OUTDATED
。
CLOUD_PROJECT_NUMBER_IS_INVALID
(错误代码 -16)
提供的云项目编号无效。
可能的解决方案
请使用已启用 Play Integrity API 的云项目的云项目编号。
另请参阅
请参阅经典请求的 CLOUD_PROJECT_NUMBER_IS_INVALID
。
REQUEST_HASH_TOO_LONG
(错误代码 -17)
注意:这仅通过 StandardIntegrityErrorCode
向标准请求报告。
提供的 requestHash
太长。requestHash
长度必须小于 500 个字符。
可能的解决方案
请使用更短的 requestHash
重试。
INTEGRITY_TOKEN_PROVIDER_INVALID
(错误代码 -19)
注意:这仅通过 StandardIntegrityErrorCode
向标准请求报告。
StandardIntegrityTokenProvider
无效。此错误代码仅适用于标准 API 请求,在 Kotlin 和 Java 编程语言的库 1.3.0 版、Unity 版 Google Play Integrity 插件 1.3.0 版及以上版本和 Play Core Native SDK 1.13.0 版及以上版本中提供支持。
可能的解决方案
请求新的完整性令牌提供程序。
STANDARD_INTEGRITY_INITIALIZATION_NEEDED
(错误代码 -101)
StandardIntegrityManager
未初始化。
可能的解决方案
请先调用 StandardIntegrityManager_init()
。
另请参阅
请参阅经典请求的 INTEGRITY_INITIALIZATION_NEEDED
。
STANDARD_INTEGRITY_INVALID_ARGUMENT
(错误代码 -103)
向标准 Integrity API 传递无效参数。
可能的解决方案
请使用正确的参数重试。
另请参阅
请参阅经典请求的 INTEGRITY_INVALID_ARGUMENT
。