将资源与 Google 日历同步,用于节点.js
Synchronize Resources with Google Calendar for node.js
>Background
我一直在node中设置一个推送通知客户端.js以监视用户的日历/事件的变化。设置calendar.events.watch
工作正常,我在 myapp.com/notifications 收到sync
通知以及表示日历更改的所有推送通知。
问题
现在,当需要轮询这些更新的事件时,我发现最好按照 Google 的同步资源演练来完成,以便获取syncToken
并逐步获取事件。在他们的java示例中,他们如何获取,存储和刷新syncToken
是有意义的。但是,我似乎找不到任何类型的文档(或其他使用它们的人(node.js。
问题
如何获取初始syncToken
以在日历上执行初始同步?要么我一直在寻找错误的关键字,要么 node.js 框架目前不支持该功能,我会感到惊讶。
上下文
这是我的代码,我将其解释为"完全初始同步"。这是此处列出的快速入门的延续。
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
吗?
您执行初始完全同步(不需要 syncToken(,作为完全同步响应的一部分,您将获得所有当前日历项目,并且(如果结果已分页,则在最后一页上(您将获得一个名为 nextSyncToken
的字段。 然后,将该nextSyncToken
值用于下一次增量同步。
从初始完全同步的文档:
在对列表操作的响应中,您将找到一个名为 nextSyncToken 表示同步令牌。您需要存储 下一个同步令牌的值。如果结果集太大,并且 响应被分页,则仅存在下一个同步令牌字段 在最后一页。
您必须存储同步令牌,直到执行下一次增量同步并将该令牌作为增量同步请求的一部分提供。 当您执行下一次增量同步时,它会为您提供一个新的syncToken
您将再次存储该并将其用于下一次增量同步。
通过这种方式syncToken
,Google 可以知道自您上次同步以来要向您发送哪些更改事件。
我发现只有当查询参数"orderBy"从请求中排除时,响应才会包含"nextSyncToken"。
所有不支持使用同步令牌的查询参数都记录在标题 nextSyncToken 下的 https://developers.google.com/calendar/v3/reference/events/list 中。
- 起始节点.js用于并行的线程池
- 哪个原型用于创建具有未知标记的节点
- 节点计划不适用于特定日期发送规则
- 通过 AJAX 发送表单,HTML 节点选择用于数据发送
- 是javascript(用于节点)中用于忽略文件的任何微小库
- 用于构建树节点层次结构的javascript库
- querySelectorAll polyfill用于所有DOM节点
- 用于节点边缘图的AngularJS友好库(带布局)
- 用于地理空间操作的节点.js库
- 用于单元测试的节点.js模块
- 用于节点的FTP模块.js可以同步文件
- 加载调用仅适用于第一个节点,不适用于叶
- jQuery或JS代码,用于获取网页中当前选定的表单项/文本/图像的确切节点数据
- 哪个ORM用于节点.js
- XPath 表达式,用于按源顺序选择 *所有* 元素、文本节点和注释节点
- 将代理服务器(如 node-http-proxy )用于一个端口上具有单个应用程序的节点应用程序有什么意义
- 用户登录不适用于节点.js和猫鼬
- 用于节点创建的DOM回调
- 将资源与 Google 日历同步,用于节点.js
- 包中不同的主入口点.用于节点和浏览器的Json