You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中使用密钥实现Play Integrity的测试方法求助

Play Integrity 实现测试指南及代码问题修复

当前代码核心问题

你现在的代码仅完成了请求Play Integrity Token的前端步骤,完全缺失了Token的后端验证环节——这就是使用错误启动密钥仍能正常登录的根本原因。Play Integrity的安全验证必须在后端完成,客户端仅负责获取Token并传递给后端,后端验证通过后才能允许登录。

正确测试步骤

一、客户端侧场景测试

  • Google Play服务不可用测试:在模拟器或真机上禁用Google Play服务,验证是否触发killProcess逻辑。
  • Root设备测试:使用已Root的真机或带Root权限的模拟器,检查应用是否被强制终止。
  • Token请求分支测试:
    • 断网状态下测试:验证是否触发onFailure回调(当前代码未在回调中处理逻辑,建议补充终止登录的操作)。
    • 正常联网状态下测试:确认能成功获取Token,并将Token传递到后端。

二、后端验证测试(关键环节)

  1. 配置Play Integrity环境:在Google Play Console中完成Play Integrity的配置,获取官方提供的验证密钥。
  2. 实现后端Token解析逻辑:
    • 使用Google官方客户端库(如Java的google-api-services-playintegrity)或直接调用REST API,传入前端获取的Token和验证密钥,解析出IntegrityPayload。
  3. 验证Payload核心字段:
    • appIntegrity.appRecognitionVerdict:需确保值为PLAY_RECOGNIZED,验证应用是从官方Play商店安装的正版应用。
    • deviceIntegrity:根据业务需求验证设备安全状态(如是否为未Root设备)。
    • accountDetails.appLicensingVerdict:若需验证应用授权状态,需确认值为LICENSED。
  4. 错误密钥测试:使用错误的验证密钥解析Token,验证后端是否返回验证失败结果,此时后端应拒绝客户端的登录请求。

代码修复建议

补充onSuccess回调中Token的后端传递逻辑,示例如下:

@Override
public void onSuccess(IntegrityTokenResponse integrityTokenResponse) {
    String integrityToken = integrityTokenResponse.token();
    // 将Token发送到后端进行验证
    postTokenToBackend(integrityToken);
}

private void postTokenToBackend(String token) {
    // 实现网络请求逻辑,将Token传递给后端
    // 根据后端返回的验证结果处理登录流程
    // 示例:若验证失败,终止应用
    // if (!verifySuccess) {
    //     android.os.Process.killProcess(android.os.Process.myPid());
    // }
}

同时建议在onFailure回调中补充终止登录的逻辑,避免Google Play服务异常时应用仍能继续登录。

额外测试技巧

  • 使用Play Console的Play Integrity测试工具:创建测试账号,模拟篡改应用、未授权设备等异常场景,验证后端的验证逻辑是否生效。
  • 使用签名后的APK测试:Play Integrity对签名有严格要求,建议使用上传到Play Console的内部测试/封闭测试版本进行测试,避免debug版本的签名问题导致验证异常。

内容的提问来源于stack exchange,提问作者watshallicallme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 07:36:05