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

使用Python调取Google Play Console数据时遇服务账户格式错误如何解决?

解决Google Play Console数据导入Pandas时的MalformedError问题

问题根源

错误MalformedError: Service account info was not in the expected format, missing fields token_uri, client_email.的核心原因是你使用的authentification.json文件不是有效的服务账号密钥文件,或文件内容缺失关键必填字段。

解决步骤

1. 重新获取正确的服务账号JSON密钥

  • 登录Google Cloud控制台,进入对应项目
  • 导航至「IAM与管理」→「服务账号」
  • 找到用于访问Play Console的服务账号,点击「密钥」标签页
  • 点击「添加密钥」→「创建新密钥」,选择JSON格式,下载后保存为authentification.json(确保文件名和代码中的路径一致)
  • 确认下载的JSON文件包含token_uri、client_email、private_key这三个必填字段。

2. 配置Play Console权限

  • 登录Google Play Console,进入「用户权限」页面
  • 点击「邀请新用户」,输入服务账号JSON中的client_email地址
  • 为该账号分配合适的权限(例如「查看应用信息和下载报告」,若需修改数据则分配更高权限)
  • 完成邀请,确保权限生效。

3. 验证代码(核心逻辑无需修改)

你的原代码逻辑本身无问题,替换为正确的服务账号密钥文件即可运行。完整代码如下:

import datetime
import pandas as pd
from google.oauth2 import service_account
from googleapiclient.discovery import build

# 配置参数
credentials_file = "authentification.json"
package_name = '你的应用包名'

# 计算日期范围(最近一周)
monday = str(datetime.date.today() - datetime.timedelta(days=7))
sunday = str(datetime.date.today() - datetime.timedelta(days=1))

# 构建服务
credentials = service_account.Credentials.from_service_account_file(
    credentials_file, scopes=['https://www.googleapis.com/auth/androidpublisher']
)
service = build('androidpublisher', 'v3', credentials=credentials)

# 获取评论数据
response = service.reviews().list(
    packageName=package_name,
    maxResults=1000,
    startDate=monday,
    endDate=sunday
).execute()

# 转换为DataFrame
df = pd.DataFrame(response['reviews'])
print(df.head())

内容的提问来源于stack exchange,提问作者François Lenne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:53:15