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

如何使用服务账户无客户端库调用Google Analytics Core Reporting API获取数据

Google Analytics Core Reporting API 直接发起HTTP请求方案

可行性说明

这种实现方式完全可行。谷歌服务账户的身份验证本质是遵循OAuth 2.0的JWT授权流程,官方的各类语言客户端库只是对这个流程做了封装,你完全可以手动实现整个流程,无需依赖第三方库。

具体实现步骤

1. 生成符合要求的JWT签名

你下载的JSON格式密钥文件中,client_email和private_key是核心字段,需要用这两个字段生成JWT:

  • JWT头部固定为如下格式:
{
  "alg": "RS256",
  "typ": "JWT"
}
  • JWT载荷需要包含以下字段:
    • iss:填入密钥文件中的client_email字段值
    • scope:填入https://www.googleapis.com/auth/analytics.readonly,只读权限足够拉取页面浏览量数据
    • aud:填入https://oauth2.googleapis.com/token
    • exp:令牌过期时间,取值为当前Unix时间戳加3600,令牌最长有效期为1小时
    • iat:当前Unix时间戳
  • 先对头部和载荷分别做Base64Url编码,用.拼接两个编码结果后,使用密钥文件中的private_key通过RS256算法签名,最后将「头部编码.载荷编码.签名」拼接得到完整的JWT字符串。

2. 用JWT换取访问令牌(access_token)

向地址https://oauth2.googleapis.com/token发起POST请求,请求体格式为application/x-www-form-urlencoded,携带两个参数:

  • grant_type:固定取值为urn:ietf:params:oauth:grant-type:jwt-bearer
  • assertion:填入上一步生成的完整JWT字符串
    请求成功后会返回包含access_token的响应,该令牌有效期为1小时,过期后需要重新生成JWT换取新的令牌。

3. 携带令牌调用API拉取page views数据

向Core Reporting API接口发起GET请求,在请求头中添加Authorization: Bearer {替换为你获取到的access_token},请求参数根据你的查询需求设置,拉取页面浏览量的核心必填参数示例:

  • ids:格式为ga:{你的GA视图ID}
  • start-date:统计开始日期,可填相对时间如7daysAgo,也可填固定日期如2024-01-01
  • end-date:统计结束日期,格式同start-date
  • metrics:填ga:pageviews即可返回页面浏览量指标
    其他可选参数如dimensions、sort、filters可根据实际查询需求自行添加。

注意事项

  • 提前将服务账户的client_email添加到你的Google Analytics账号的用户列表中,赋予只读权限,否则会返回权限不足的错误
  • JWT签名必须使用RS256算法,使用其他算法会导致验证失败
  • 不要长期缓存access_token,建议每次执行拉取任务前重新生成令牌,避免过期导致请求失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:27:03