Python调用Google Play Store API获应用评论遇权限错误求助
解决Android Publisher API调用的权限报错问题
我来帮你搞定这个「The caller does not have permission」的报错,这类问题在使用Google Play的API时挺常见的,咱们从权限配置到代码细节一步步排查:
一、先搞定核心的权限配置问题
这是最可能导致报错的原因,得确保你的服务账号拥有访问应用评论的权限:
- 打开Google Play Console,找到你对应的应用(包名是
xtestx) - 进入「用户和权限」页面,点击「添加用户」
- 输入你服务账号的邮箱(就是
testxyz.json里的client_email字段值),然后给它分配至少「查看应用权限」的权限(如果需要回复评论,就选「回复评论权限」) - 注意:权限生效可能需要5-10分钟,别刚设置完就马上重试
二、确认Android Publisher API已启用
如果API没开,哪怕权限对了也会报错:
- 打开Google Cloud Console,找到你创建服务账号的项目
- 在搜索栏输入「Android Publisher API」,检查它的状态是不是「已启用」
- 如果是「未启用」,点击启用按钮,等几分钟再测试
三、验证密钥文件的正确性
确保你用的testxyz.json是正确的:
- 打开文件,核对
client_email和你在Play Console添加的邮箱完全一致 - 确认这个文件是直接从Google Cloud Console下载的,没有被修改过内容
四、修复代码里的两个小问题
你的代码里还有两处错误,虽然不是权限报错的直接原因,但会导致后续分页逻辑失效:
- 缺少
httplib2的导入,要在开头加上:import httplib2 - 分页逻辑有语法错误,正确的写法应该是:
原来的代码里错误地拼接了infinite_loop_canary = 100 while "tokenPagination" in reviews_page and "nextPageToken" in reviews_page["tokenPagination"]: next_token = reviews_page["tokenPagination"]["nextPageToken"] reviews_page = reviews_resource.list( packageName=package_name, maxResults=100, pageToken=next_token ).execute() reviews_list.extend(reviews_page["reviews"]) infinite_loop_canary -= 1 if infinite_loop_canary < 0: breakpageToken参数,而且多了一个闭合括号,这样会直接导致语法错误。
按照上面的步骤逐一排查后,应该就能正常调用API获取评论了。
内容的提问来源于stack exchange,提问作者Sravya Lenka




