我需要在Google网站上发生更改时触发的事件。
有一个包含所有最新更改的XML Feed。我打算用Zapier轮询这个Feed,当有什么变化时,Zapier会向我提供的网址发出http请求,以便我得到我的活动。
只要网站是公开的,这样就可以正常工作,但就我而言,它不是。
所以我考虑为google提供的Feed构建代理。代理将使用正确的身份验证调用feed并传递内容。 Zapier将使用Zapier友好认证机制调用代理。
我想我需要使用服务帐户调用google Feed。那么我该如何使用node.js?
我一直在这看: https://developers.google.com/google-apps/sites/docs/1.0/developers_guide_protocol#ActivityFeed
答案 0 :(得分:0)
想出来了!
我已经通过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)上执行此操作。
现在......它有效:-) !!! \ O /