google-api - 使用 API 访问 Google Analytics(分析)用户数据时验证凭据无效
问题描述
我正在尝试使用 python 3.7 访问用户在谷歌分析中的活动...我已经完成了获取访问令牌并使用此处的代码的过程
https://developers.google.com/analytics/devguides/reporting/core/v4/user-reporting
如果我只是下载聚合数据,则凭据有效,但是当我使用这种方法时,我收到一条 401 消息,上面写着
"message": "请求具有无效的身份验证凭据。需要 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据。"status": "UNAUTHENTICATED"
如果我去 OAuth 2.0 Playground,访问令牌可以正常工作。有什么想法我在这里想念的吗?谢谢。
url = 'https://analyticsreporting.googleapis.com/v4/userActivity:search'
payload = {
"viewId": "xxx",
"user": {
"type": "CLIENT_ID",
"userId": "xxx"
},
"dateRange": {
"startDate": "2019-06-13",
"endDate": "2019-10-05",
}
}
hed = {
'Authorization': 'Bearer ' + access_token,
'Content-type': 'application/json'
}
r = requests.post(url, data=payload, headers=hed)
解决方案
您可以使用 Google 服务帐户获取令牌以向 Google Analytics API 发送请求。Google Service Account 实际上是 RFC7523 的实现。
首先,您需要创建一个 Google Service Account,然后您可以使用Authlib AssertionSession
直接访问 Google Analytics API。
推荐阅读
- swift - swift中带有字符串值的枚举int
- java - 如何从字符串属性自动映射到给定类型的对象?
- java - 将时间戳四舍五入到最接近的 10 秒的最有效方法
- html - SCSS 样式不起作用...Z-Index 问题?
- python - Python 函数不引用参数
- javascript - 如何将树结构的键复制到具有其他名称的键或将其重命名为其他名称?
- javascript - Node.js pg-promise Azure 函数写入 Postgres (timescaleDB)
- swiftui - SwiftUI TextEditor:在文本更改时滚动到顶部
- node.js - NodeJS应用程序的Socket.io实时正常运行时间?
- vertica - Vertica 中的表是否有主键和辅助键