我正在使用Google Calendar API,并试图在触发日历事件时接收推送通知https://developers.google.com/calendar/v3/push
我认为一切都已正确设置...
gapi.client.calendar.events.watch({
calendarId: 'primary',
resource: {
id: uuid,
type: 'web_hook',
address: window.location.href,
},
}, (err, response) => {
if (err) {
console.log('err:', err);
} else {
console.log('response:', response);
}
}).then((res) => {
console.log('res:', res);
});
但我想不是。当我调用上面的代码时,我得到200响应
{
"kind": "api#channel",
"id": "...",
"resourceId": "...",
"resourceUri": "https://content.googleapis.com/calendar/v3/calendars/primary/events?alt=json&maxResults=250&alt=json",
"expiration": "1554203159000"
}
我相信我也应该收到同步消息,但我不是(https://developers.google.com/calendar/v3/push#sync)
为了测试,我正在修改日历本身中的一个事件(更改标题,日期,删除等),并且我希望浏览器中会发生一些事情,但是什么也没发生。
我一般不熟悉Push通知,因此不确定要做什么。
我已经通过身份验证,并根据https://developers.google.com/calendar/quickstart/js显示事件
我想念什么?非常感谢您的帮助!
谢谢!
答案 0 :(得分:3)
我怀疑您想准确了解什么是推送通知。
有两种主要方法来跟踪资源何时发生更改。您可以经常轮询该资源,并检查资源中是否有任何更改。
例如,您的应用程序可能每五分钟运行一次,并向Google发出请求,要求将事件返回给您。返回该事件后,您将检查用户创建的事件是否有任何更改。这种检查更改的方法非常耗时,并且需要资源来不断轮询服务器以查找更改。更好的方法是使用Push notifications
Push notifications进行更改后通知您的应用程序。
本文档介绍了资源更改时如何使用通知您的应用程序的推送通知。
通过启用手表进行设置
POST https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events/watch
Authorization: Bearer auth_token_for_current_user
Content-Type: application/json
{
"id": "01234567-89ab-cdef-0123456789ab", // Your channel ID.
"type": "web_hook",
"address": "https:/examle.com/notifications", // Your receiving URL.
...
"token": "target=myApp-myCalendarChannelDest", // (Optional) Your channel token.
"expiration": 1426325213000 // (Optional) Your requested channel expiration time.
}
这告诉Google服务器,当有人更改活动时,您希望收到通知。这将建立一个连接到https:/examle.com/notifications的Web挂钩,一旦事件发生更改,该挂钩将立即得到通知。
事件名称,日期时间通常是更改的,我认为如果将其他人添加到事件中,您不会收到推送通知。
这不是什么
在活动到期前10分钟,服务器不会向您发送消息。那就是用户通知和完全不同的内容,而不是Google Calendar API的一部分。