使用Node.js获取Google Analytics数据:入门指引及令牌过期解决
用Node.js获取Google Analytics数据的正确姿势(解决Token过期问题)
核心问题解决:Token 15分钟过期
你之前的代码用的是短期用户授权Token,这类Token本身就只有15分钟有效期。要长期稳定获取数据,应该改用服务账号(Service Account),它能自动刷新Token,无需手动维护。
第一步:前期准备
- 登录Google Cloud控制台,创建新项目并启用「Google Analytics API」
- 创建服务账号,下载密钥JSON文件(保存到项目目录,比如命名为
service-account-key.json) - 打开Google Analytics后台,将服务账号的邮箱添加到对应视图的权限列表中(至少授予「查看者」权限)
第二步:示例代码(用官方库自动管理Token)
先安装依赖:
npm install googleapis
编写业务代码:
const { google } = require('googleapis'); const path = require('path'); exports.googledata = async (req, res) => { try { // 加载服务账号密钥,初始化认证 const auth = new google.auth.GoogleAuth({ keyFile: path.join(__dirname, 'service-account-key.json'), scopes: ['https://www.googleapis.com/auth/analytics.readonly'] }); // 创建Analytics API客户端 const analytics = google.analytics({ version: 'v3', auth: auth }); // 发起数据查询(替换为你的视图ID和查询条件) const response = await analytics.data.ga.get({ ids: 'ga:214170689', // 你的GA视图ID startDate: '2022-01-01', endDate: 'today', metrics: 'ga:pageviews', dimensions: 'ga:pagePath', filters: 'ga:pagePath==/accounts/registration/' }); console.log(JSON.stringify(response.data)); res.json(response.data); } catch (error) { console.error('获取数据失败:', error); res.status(500).json({ error: error.message }); } };
代码说明
- 使用官方
googleapis库,它会自动完成Token的获取、刷新逻辑,彻底解决过期问题 GoogleAuth通过服务账号密钥完成认证,权限范围设置为只读Analytics数据,满足需求且更安全- 查询参数和你原有代码一致,只需替换视图ID和密钥文件路径即可直接使用
旧代码过期原因
你之前手动传入的access_token是通过OAuth2用户授权流程生成的短期Token,仅适用于用户交互场景。服务账号则是专为服务器端自动化应用设计,能长期稳定提供数据访问能力。
内容的提问来源于stack exchange,提问作者Kunwar Kishor
相关产品推荐
相关产品推荐

