Node.js 调查谷歌网站的变化

Node.js 调查谷歌网站的变化,node.js,api,google-api,google-sites,Node.js,Api,Google Api,Google Sites,我需要一个事件,是被解雇时,我的谷歌网站上的一些变化 有一个包含所有最新更改的XML提要。我正计划用Zapier轮询这个提要,当有什么变化时,Zapier会向我提供的url发出http请求,这样我就可以得到我的事件 只要网站是公开的,这就行,但在我的情况下不是 因此,我考虑为谷歌提供的提要构建一个代理。代理将使用正确的身份验证调用提要并传递内容。Zapier将使用Zapier友好的身份验证机制调用代理 我想我需要用一个服务帐户给google feed打电话。那么如何使用node.js实现这一点呢

我需要一个事件,是被解雇时,我的谷歌网站上的一些变化

有一个包含所有最新更改的XML提要。我正计划用Zapier轮询这个提要,当有什么变化时,Zapier会向我提供的url发出http请求,这样我就可以得到我的事件

只要网站是公开的,这就行,但在我的情况下不是

因此,我考虑为谷歌提供的提要构建一个代理。代理将使用正确的身份验证调用提要并传递内容。Zapier将使用Zapier友好的身份验证机制调用代理

我想我需要用一个服务帐户给google feed打电话。那么如何使用node.js实现这一点呢

我一直在看这里:

想明白了

我制作了一个具有基本身份验证的代理,可以通过https访问。这个代理将通过我感兴趣的Google站点的活动提要

我使用googleapis模块在node.js中构建了代理。下面是我使用的一段代码:

var jwtClient = new googleapis.auth.JWT(
    client_id_email,
    __dirname + 'key.pem',
    null, ['https://sites.google.com/feeds/'],
    'user@domain.org'
);

jwtClient.authorize(function(err, token) {
    if (err) return next(err);

    return rest({
        path: 'https://sites.google.com/feeds/activity/{domainName}/{siteName}',
        headers: {
            "GData-Version": "1.4",
            Authorization: token.token_type + ' ' + token.access_token
        },
        params: {
            domainName: 'domain.org',
            siteName: 'site',
        },
    }).done(function(result) {
        res.set(result.headers);
        res.send(result.entity);
    }, next);
});
用户名(user@domain.org)在该示例中,是服务帐户模拟的用户。此用户必须具有访问该网站的权限

在本例中,我将服务帐户密钥放在文件名“key.pem”中

现在,您必须允许访问要访问的域的服务帐户。您可以在域的管理站点(admin.google.com)上执行此操作

  • 去保安局
  • 转到高级设置
  • 转到API客户端访问
  • 在这里,您必须添加服务客户端的客户端id
  • 现在。。。它可以工作:-)\o/