首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过nodejs访问google分析

通过nodejs访问google分析
EN

Stack Overflow用户
提问于 2013-09-08 09:20:29
回答 3查看 6.9K关注 0票数 7

我正在使用nodejs,我想展示一些来自google analytics的数据。

在google API explorer上,我找到了这个url来获取我的数据:

代码语言:javascript
运行
复制
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,我会得到:

代码语言:javascript
运行
复制
{"error":{"errors":[{"domain":"global","reason":"required","message":"Login Required","locationType":"header","location":"Authorization"}],"code":401,"message":"Login Required"}}

如何通过url传递我的登录名,然后访问我的数据?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2015-01-20 08:24:16

在Google API控制台中,您需要激活Analytics API,最后设置一个服务帐户,然后下载一个*.p12文件。

在此*.p12文件中,您需要将其转换为*.pem文件,为此,请运行以下命令:

openssl pkcs12 -in XXXXX.p12 -nocerts -nodes -out XXXXX.pem

系统会要求您输入密码,密码应该是notasecret

现在,您已经获得了所需的*.pem文件,帐户电子邮件就是google api控制台中显示的EMAIL ADDRESS电子邮件。

不要忘记将此地址添加到您的分析帐户(请参阅:Analytics Google API Error 403: "User does not have any Google Analytics Account")

您应该可以使用以下代码片段:

代码语言:javascript
运行
复制
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);
    });
});
票数 11
EN

Stack Overflow用户

发布于 2013-12-05 09:50:31

是否将Content-Type设置为application/x-www-form-urlencoded?

如果你仍然被困在这里,值得注意的是,谷歌在这里发布了一个nodejs客户端库(alpha):https://github.com/google/google-api-nodejs-client

票数 0
EN

Stack Overflow用户

发布于 2016-06-15 03:02:08

@xavier.seignard我遵循了您的代码片段,但进行了修改,因为我使用的是json文件,而不是p12 (下面的代码)。但我有一个疑问,我正在用nodejs开发一个restful后端。在这种情况下,不需要将ga.get函数放在app.use()中以获取每个请求的分析信息吗?

代码语言:javascript
运行
复制
var key = require('filename.json');
var authClient = new JWT(
key.client_email,
null,
key.private_key,
['https://www.googleapis.com/auth/analytics.readonly']);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18679486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档