You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

验证Google Store应用内购买的权限要求及401权限错误排查

Google Play应用内购买验证问题解答

一、验证Google Store应用内购买需要哪些权限?

要顺利完成Google Play应用内购买的验证,你需要覆盖这几个权限相关的核心点:

  • 服务账号必须在Google Play Console中获得对应开发者账号的权限,至少要有查看购买数据的权限(比如「财务」或「订单管理」权限),直接授予管理员权限是最稳妥的选择
  • Google Cloud Console里,确保你的项目已经启用了Android Publisher API,同时服务账号拥有访问该API的权限
  • 调用API时的OAuth2权限范围必须包含 https://www.googleapis.com/auth/androidpublisher,这是调用Android Publisher API的核心必填范围

二、解决401「权限不足」的问题

你已经给了服务账号管理员和项目所有者权限,但还是报错,大概率是这几个容易被忽略的细节出了问题:

1. Android Publisher API未启用

这是最常见的坑!去Google Cloud Console找到你的项目,搜索「Android Publisher API」,确认它处于启用状态。哪怕权限全给足了,API没开的话,请求肯定会被拒绝。

2. 服务账号未在Play Console中正确关联授权

Cloud Console的项目所有者权限和Play Console的权限是完全独立的!你必须在Play Console的「设置 → 用户和权限 → 邀请新用户」里,输入服务账号的邮箱(就是你service_account.json里的client_email字段),然后授予管理员权限。只在Cloud Console设置权限是没用的,必须走这一步完成关联。

3. 参数拼写或匹配错误

仔细核对代码里的几个关键参数:

  • <package name>:必须和Play Console里应用的包名完全一致,大小写、标点符号都不能出错
  • <subscription id>:要和你在Play Console创建的订阅产品ID完全匹配,别把产品ID和订阅计划搞混
  • token:确认客户端传过来的token是有效的,测试购买的token有没有过期,是不是对应测试账号的真实购买记录

4. 内部测试版本的特殊限制

如果是内部测试版本的购买验证,要确保:

  • 测试账号已经添加到Play Console的内部测试人员列表中
  • 测试设备安装的是正式发布的内部测试版本APK/App Bundle
  • 测试购买是按照Google官方测试流程进行的(比如使用指定的测试支付方式)

5. 服务账号密钥文件有误

检查你使用的service_account.json是不是从对应项目的Cloud Console正确下载的,有没有被修改过,或者是否已过期。

给你的代码提个小建议

你的代码里缺少build方法的导入,记得补上:

from googleapiclient.discovery import build

另外如果这是独立脚本,self.http_timeout可以改成具体数值(比如30),避免因上下文问题报错。

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

火山引擎 最新活动