python - Google Analytics API - 我可以使用自己的 Google 帐户向其他人显示报告吗?

标签 python openssl rsa google-analytics-api

我的客户运营一个实现 Google Analytics(跟踪)的网站。

她想向利益相关者报告一些核心统计数据(综合浏览量)。

利益相关者不应有权访问我客户的 Google (Analytics) 帐户。

是否可以使用 Google Analytics API 向使用自己的 Google 帐户登录的用户报告?

更新/已解决

我发现实现这一点的最简单方法是使用 python 获取“承载”访问 token 。 您只需要一个 Google 服务帐户和一个私钥(API 和身份验证 > 凭据)。 让您的 javascript 客户端从您的服务器请求访问 token 并使用 gapi.auth.setToken方法进行授权。现在您可以调用类似 gapi.client.analytics.management.accounts.list 的方法.

注意:您确实需要在 developer console 中激活 Analytics API我还必须使用 openssl 创建一个 PEM 文件为了让 rsa 模块接受 key 。

这是我使用的 python 代码(简化)。

from os import path
import base64
import rsa
import json
import calendar
import datetime
import urllib
iat = calendar.timegm(datetime.datetime.utcnow().utctimetuple())
exp = iat + 3600
header = "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9" # {"alg":"RS256","typ":"JWT"}
claimset = {
   'iss': "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="672a3e38232231222b28372235382624242832293327030211020b081702154900140215110e0402060404081209134904080a" rel="noreferrer noopener nofollow">[email protected]</a>",
   'scope': "https://www.googleapis.com/auth/analytics.readonly",
   'aud': "https://accounts.google.com/o/oauth2/token",
   'exp': exp,
   'iat': iat
}
claimset = json.dumps(claimset).encode('utf-8')
claimset = base64.urlsafe_b64encode(claimset)
signature = "%s.%s" % (header, claimset)
signature = rsa.sign(signature.encode('utf-8'), rsa.PrivateKey.load_pkcs1(open(PATH_TO_PRIVATE_KEY).read(), format='PEM'), 'SHA-256')
signature = base64.urlsafe_b64encode(signature)
postdata = {
   'grant_type': "urn:ietf:params:oauth:grant-type:jwt-bearer",
   'assertion': "%s.%s.%s" % (header, claimset, signature)
}
response = json.loads(urllib.urlopen("https://accounts.google.com/o/oauth2/token", urllib.urlencode(postdata)).read())
print response

最佳答案

您应该查看Using OAuth 2.0 for Server to Server Applications

通过将服务帐户电子邮件作为用户添加到您的客户 Google 分析帐户,只需为其提供简单的读取访问权限即可。然后,您将能够使用服务帐户访问 Google Analytics API 并显示客户想要的统计信息。无需登录,他们只能看到您选择从 Google Analytics API 中提取的信息。

关于python - Google Analytics API - 我可以使用自己的 Google 帐户向其他人显示报告吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23906486/

相关文章:

Python,UnicodeDecodeError 尝试打印包含非 ascii 字符的异常

python - 如何删除 Django 中默认用户数据库中的现有字段?

java - 无法在java中读取公钥进行验证

java - 是什么导致 keytool 错误 "Failed to decrypt safe contents entry"?

c - 在 Swift 中使用 OpenSSL stack_st_x509?

python - 如何将抓取的项目保存到多个 .jl 文件?

python - 根据年份删除 periodIndex 类型的列

node.js - Node js - 使用由 SmartCard HSM 和 NodeRSA 模块生成的 key

java - RSA 加密 : Difference between Java and Android

java - 将 openSSH rsa key 转换为 javax.crypto.Cipher 兼容格式