Google Calendar Watch 和 Events 协同工作

Google Calendar Watch and Events working together

我正在创建一个可以反映用户日历的 Node/Express Web 应用程序。它将收到用户日历中的每个更改的通知,并将使用该用户的最新日历更新数据库。

假设我们要监控john.doe@gmail.com。请告诉我这是否是最好的(也是唯一的)方法:

  1. Push notification 设置 - 在此过程中,我们提供(除其他字段外):

    • token - 将被回显的 plain-text。 这是我可以放类似'calOwner=john.doe@gmail.com'
    • 的地方
    • id - 一个 UUID 频道 id
  2. 每次更改时,我的 webhook 都会收到推送通知,其中包含:

    • 令牌 : calOwner=john.doe@gmail.com
    • id : channelId - 我不明白是否可以单独使用此字段将此通知消息追溯到 john.doe@gmail.com
  3. 现在我知道 john.doe@gmail.com 已经改变了,我会做一个 list with a synchToken。这将 return 显示自上次同步以来约翰日历中的变化

让我感到困惑的是看似重要的字段 channelIdresourceId (显示为 x-goog-resource-id 在推送通知 header) 中是无用的,唯一绑定 push message to list 的字段是一个 可选的 plain-text字段 令牌 .

请告诉我这是否是跟踪用户日历的唯一方法。

更新

感谢@KENdi 的回答。

我的挣扎在于仅仅查看推送通知消息,无法将其追溯到 john.doe@gmail.com 。我现在明白为什么会这样,推送通知不包含 calendarId,而是包含 resourceId(简单来说就是事件 object)。之所以如此,是因为一个事件可以与多个日历相关联,因此可以与多个 calendarId 相关联。因此,订阅者有责任维护频道与其最初用于创建频道的 calendarId 的关联。

是的,你是对的,你需要日历 push notification,来通知你 Google 日历中发生的所有变化。

X-Goog-Resource-ID 的目的是一个不透明的值,用于标识监视的资源。这个 ID 在 API 个版本中是稳定的。

检查这个 SO question 以了解更多关于 X-Goog-Resource-Id 的目的。