在观察给定日历上的事件集合时,我需要多久发出手表请求?
我将代码在哪里提出手表请求?它只需要一次吗?
我下面的代码获取访问令牌,并发表帖子来创建手表频道,但是我不确定在哪里托管代码或我需要运行的频率:
let { google } = require("googleapis");
let functions = require("firebase-functions");
let privatekey = require("./config.json");
let axios = require("axios");
let jwt = new google.auth.JWT(
privatekey.client_email,
null,
privatekey.private_key,
["https://www.googleapis.com/auth/calendar"]
);
const token = await jwt.authorize();
let headers = {
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json;charset=UTF-8",
Authorization: token.token_type + " " + token.access_token
};
let data = {
id: randomId,
type: "web_hook",
address: "https://rguc-calendars.firebaseapp.com/notifications",
params: {
ttl: 3600
}
};
axios
.post(
"https://www.googleapis.com/calendar/v3/calendars/thirdyear@rguc.co.uk/events/watch",
data,
{ headers }
)
.then(function(response) {
// success
})
.catch(function(error) {
// error
});
推送通知
Google日历API提供了推送通知,让您观看 用于更改资源。您可以使用此功能来改进 您的应用程序的性能。它使您可以消除额外的 网络和计算与投票资源有关的成本以确定 如果他们改变了。每当观看资源更改时,Google 日历API通知您的应用程序。
- 注册接收URL的域。
- 例如,如果您打算将https://example.com/notifications用作接收URL,则需要注册https://example.com。
- 设置您的接收URL或" Webhook"回调接收器。
- 这是一个HTTPS服务器,可处理资源更改时触发的API通知消息。
- 为要观看的每个资源端点设置通知频道。
- 一个频道指定通知消息的路由信息。作为频道设置的一部分,您可以确定要接收通知的特定URL。每当频道的资源更改时,Google日历API将通知消息作为发布请求发送到该URL。
您设置了手表后,Google会通知您,只要发生更改,您就不必再次称呼它。