通过nodejs访问谷歌分析
我正在使用nodejs,我想从谷歌分析显示一些数据。
在谷歌API浏览器,我已经find这个url来获取我的数据:
https://www.googleapis.com/analytics/v3/data/ga?ids=ga%XXXXX&start-date=2013-08-17&end-date=2013-09-15&metrics=ga%3Avisits&key={YOUR_API_KEY}
但是,如果我访问此url,我会得到:
{"error":{"errors":[{"domain":"global","reason":"required","message":"Login Required","locationType":"header","location":"Authorization"}],"code":401,"message":"Login Required"}}
我怎样才能通过我的urllogin,然后访问我的数据?
谢谢!
在Google API控制台中,您需要激活Analytics API,最后设置一个服务帐户,然后下载一个*.p12
文件。
从这个*.p12
文件中,您需要将其转换为*.pem
文件,执行以下操作:
openssl pkcs12 -in XXXXX.p12 -nocerts -nodes -out XXXXX.pem
你会被要求一个密码,它应该是notasecret
现在你得到了你需要的*.pem
文件,这个帐户的电子邮件就是在google api控制台中显示的EMAIL ADDRESS
,就像EMAIL ADDRESS
。
不要忘记将此地址添加到您的分析帐户(请参阅: Analytics ( 分析)Google API Error 403:“用户没有任何Google Analytics帐户” )
你应该很好地使用下面的代码片段:
var googleapis = require('googleapis'), JWT = googleapis.auth.JWT, analytics = googleapis.analytics('v3'); var SERVICE_ACCOUNT_EMAIL = 'XXXXXXXXXX@developer.gserviceaccount.com'; var SERVICE_ACCOUNT_KEY_FILE = __dirname + '/key.pem'; var authClient = new JWT( SERVICE_ACCOUNT_EMAIL, SERVICE_ACCOUNT_KEY_FILE, null, ['https://www.googleapis.com/auth/analytics.readonly'] ); authClient.authorize(function(err, tokens) { if (err) { console.log(err); return; } analytics.data.ga.get({ auth: authClient, 'ids': 'ga:XXXXXXXX', 'start-date': '2015-01-19', 'end-date': '2015-01-19', 'metrics': 'ga:visits' }, function(err, result) { console.log(err); console.log(result); }); });
你是否将Content-Type设置为application / x-www-form-urlencoded?
如果您仍然陷入困境,值得注意的是Google已经在这里发布了一个nodejs客户端库(alpha): https : //github.com/google/google-api-nodejs-client
@ xavier.seignard我跟随你的代码片段,但修改,因为我使用的是json文件,而不是p12(代码如下)。 但是我有一个疑问,我在nodejs中开发了一个安静的后端。 在这种情况下,是否有必要将ga.get函数放在app.use()中,以获取每个请求的分析信息?
var key = require('filename.json'); var authClient = new JWT( key.client_email, null, key.private_key, ['https://www.googleapis.com/auth/analytics.readonly']);