我一直在node.js中设置推送通知客户端,以观察用户日历/事件的变化。设置calendar.events.watch
效果很好,我在myapp.com/notifications上收到sync
通知以及表示日历更改的所有推送通知。
现在,当需要轮询这些更新的事件时,我发现最好通过跟踪Google's Synchronize Resources演练来获取syncToken
并逐步抓取事件。在他们的java示例中,它们如何获取,存储和刷新syncToken
是有意义的。但是,我似乎无法为node.js找到任何类型的文档(或其他任何使用它们的文档)。
如何获得初始syncToken
以在日历上执行初始同步?要么我一直在搜索错误的关键字,要么node.js框架目前不支持该功能,我会感到很惊讶。
这是我的解释为"完全初始同步的代码。" 这是列出的快速入门here.
的延续var google = require('googleapis');
...
function listEvents(auth) {
var calendar = google.calendar('v3');
calendar.events.list({
auth: auth,
calendarId: 'ZZZZZZZZZZZZZZZZZZZ',
timeMin: (new Date()).toISOString(),
maxResults: 10,
singleEvents: true,
orderBy: 'startTime'
}, function(err, response) {
if (err) {
console.log('The API returned an error: ' + err);
return;
}
var events = response.items;
console.log(response);
});
}
console.log(response);
语句返回...
{ kind: 'calendar#events',
etag: '"**redacted**"',
summary: 'me@gmail.com',
updated: '2016-07-19T00:34:55.921Z',
timeZone: 'America/New_York',
accessRole: 'owner',
defaultReminders: [ { method: 'popup', minutes: 30 } ],
items:
[ { kind: 'calendar#event',
etag: '"**redacted**"',
id: '**redacted**',
status: 'confirmed',
htmlLink: 'https://www.google.com/calendar/event?eid=**redacted**',
created: '2016-07-19T00:34:55.000Z',
updated: '2016-07-19T00:34:55.715Z',
summary: 'Thing',
creator: [Object],
organizer: [Object],
start: [Object],
end: [Object],
iCalUID: '**redacted**@google.com',
sequence: 0,
reminders: [Object] } ] }
这里应该找到nextSyncToken
吗?
答案 0 :(得分:1)
您执行初始完全同步(不需要syncToken),并且作为完整同步响应的一部分,您将获得所有当前日历项目(如果结果被分页,则在最后一页上),您将获得一个名为nextSyncToken
。然后,将该nextSyncToken
值用于下一次增量同步。
来自initial full sync上的文档:
在对列表操作的响应中,您将找到一个名为的字段 nextSyncToken表示同步令牌。你需要存储 nextSyncToken的值。如果结果集太大而且 响应得到分页,然后只存在nextSyncToken字段 在最后一页。
您必须存储同步令牌,直到执行下一次增量同步,并将该令牌作为增量同步请求的一部分提供。当您执行下一次增量同步时,它会为您提供一个新的syncToken
,您将再次存储并用于下一次增量同步。
此syncToken
是Google了解自您上次同步后发送给您的更改事件的方式。
答案 1 :(得分:0)
我发现只有当查询参数'orderBy'从请求中排除时,响应才包含'nextSyncToken'。
在https://developers.google.com/calendar/v3/reference/events/list的标题nextSyncToken下记录了所有不支持的使用同步令牌的查询参数。