使用Google Calendar与node.js同步资源

背景

我一直在node.js中设置一个推送通知客户端来监视用户的日历/事件的变化。 设置calendar.events.watch完美工作,我收到myapp.com/notifications sync通知,以及所有推送通知表示日历中的变化。

问题

现在,当需要轮询这些更新的事件时,我发现最好通过遵循Google的“同步资源”演练来获取syncToken并逐步获取事件。 在他们的java例子中,它们是如何获取,存储和刷新syncToken的。 但是,我似乎无法find任何types的文档(或任何其他人使用它们)node.js.

如何获取初始syncToken在日历上执行初始同步? 或者我一直在寻找错误的关键字,或者node.js框架中目前不支持这个function,这让我感到惊讶。

上下文

这是我的代码,我解释为“完全初始同步”。 这是此处列出的快速入门的延续。

 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] } ] } 

应该在这里findnextSyncToken吗?

你做一个初始的完全同步(不需要syncToken),作为完整的同步响应的一部分,你得到所有当前的日历项目和(在最后一页,如果结果是分页),你会得到一个名为nextSyncToken的字段。 然后,您使用nextSyncToken值进行下一次增量同步。

从最初的完全同步文档:

在对列表操作的响应中,您会发现一个名为nextSyncToken的字段,代表同步令牌。 你需要存储nextSyncToken的值。 如果结果集太大并且响应得到分页,则nextSyncToken字段仅出现在最后一页上。

您必须存储同步令牌,直到您执行下一个增量同步,并将该令牌作为增量同步请求的一部分呈现。 当您执行下一个增量同步时,它会给您一个新的syncToken ,您将再次存储并用于下一个增量同步。

syncToken是Google知道自上次同步以来要向您发送哪些更改事件的方式。