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

使用Play Developer Reporting API请求ANR数据时遇403权限范围不足问题

问题分析与解决

核心问题:权限范围的适用场景错误

https://www.googleapis.com/auth/playdeveloperreporting这个权限范围仅支持服务账号(Service Account)认证,不能用于你当前使用的「用户OAuth授权流程」(InstalledAppFlow),所以直接替换会触发invalid_scope错误。

而你原本使用的https://www.googleapis.com/auth/androidpublisher是用户授权流程的正确范围,但出现权限不足的问题,大概率是以下原因导致:

解决方案步骤

1. 清除旧授权缓存

首次授权后,Google会在本地生成缓存的凭证文件(通常在~/.credentials/目录,Windows对应路径为C:\Users\<你的用户名>\.credentials\),旧缓存的凭证可能仍使用旧权限范围,未同步更新。

  • 找到并删除与你的应用相关的缓存凭证文件,重新运行脚本完成授权流程。

2. 确认账号权限有效性

确保你的Google账号在Play Console中:

  • 拥有目标应用的「查看应用信息(只读)」或更高权限(如编辑者、所有者)
  • 权限已生效(权限变更可能需要数分钟同步时间)

3. 检查OAuth客户端ID类型

你下载的client_secret.json必须是**「桌面应用」类型**的OAuth客户端ID:

  • 登录Google Cloud Console,进入你的项目
  • 导航至「API和服务」→「凭据」
  • 确认创建的OAuth客户端ID为「桌面应用」类型,若不是则重新创建并下载新的client_secret.json替换原文件。

修正后的关键脚本片段

保留正确的用户授权范围,清除缓存后重新授权:

# 用户授权流程的正确权限范围
SCOPES = ['https://www.googleapis.com/auth/androidpublisher']

备选方案:改用服务账号认证

若无需手动授权,可切换为服务账号认证模式:

  1. 在Google Cloud Console创建服务账号,下载JSON密钥文件
  2. 在Play Console「用户和权限」中添加服务账号邮箱,授予「查看应用信息(只读)」权限
  3. 替换认证逻辑为服务账号方式:
from google.oauth2 import service_account
from googleapiclient.discovery import build

# 服务账号专用权限范围
SCOPES = ['https://www.googleapis.com/auth/playdeveloperreporting']
SERVICE_ACCOUNT_FILE = 'service-account-key.json'

credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)

def get_authenticated_service():
    return build('playdeveloperreporting', 'v1beta1', credentials=credentials)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:50:39