解码Play Integrity令牌时遭遇403权限拒绝问题求助
解决Play Integrity服务端decodeIntegrityToken 403 PERMISSION_DENIED问题
以下是针对该权限拒绝问题的具体排查和解决步骤:
添加必要的IAM角色
你的服务账号当前仅拥有roles/iam.serviceAccountUser和roles/serviceusage.serviceUsageConsumer,这两个角色不足以完成完整性令牌解码操作。必须给服务账号添加Play Integrity Decoder角色(roles/playintegrity.decoder):- 打开Google Cloud Console,进入关联的项目
- 进入「IAM与管理员」→「IAM」页面
- 找到目标服务账号,点击编辑按钮
- 点击「添加另一个角色」,搜索并选择「Play Integrity > Play Integrity Decoder」
- 保存更改,等待5-10分钟让权限生效
也可以通过CLI直接添加:
gcloud projects add-iam-policy-binding <google-cloud-project-name> \ --member="serviceAccount:<service-acct-name>" \ --role="roles/playintegrity.decoder"核对项目关联一致性
- 确认Android端代码中
setCloudProjectNumber传入的项目编号,是Play Console中应用绑定的Google Cloud项目编号 - 确认服务端使用的
credentials.json,属于同一个绑定Cloud项目下的服务账号 - 检查Play Console中应用的「App integrity」设置,确保已启用Play Integrity功能,且关联的Cloud项目无误
- 确认Android端代码中
验证请求中的appId正确性
服务端调用decodeIntegrityToken(appId, decodeRequest)时,appId必须是应用的完整包名(例如com.example.myapp),且与Play Console中注册的应用包名完全一致,大小写、拼写都不能出错确认权限范围设置
确保服务端代码中createScoped(PlayIntegrityScopes.PLAYINTEGRITY)这一行没有被注释或遗漏,该范围是调用Play Integrity API的必要条件
内容的提问来源于stack exchange,提问作者rysv
相关产品推荐
相关产品推荐

