【问题标题】:Response from Google Regarding Push Notification谷歌关于推送通知的回应
【发布时间】:2013-08-20 22:50:38
【问题描述】:

我正在为 Google 日历集成创建一个应用程序。当有人手动更改 Google 日历事件时,我正在尝试从 Google 获取通知。因此,在 Google 和我的应用程序之间创建了一个通道。现在的问题是,当 google 将响应标头发送到我的重定向 URI 时,我们没有任何描述它们是对日历的更改。请查看我们将收到的回复

POST https://mydomain.com/notifications // Your receiving URL.
Content-Type: application/json; utf-8
Content-Length: 0
X-Goog-Channel-ID: 4ba78bf0-6a47-11e2-bcfd-0800200c9a66
X-Goog-Channel-Token: 398348u3tu83ut8uu38
X-Goog-Channel-Expiration: 1367869013915
X-Goog-Resource-ID:  ret08u3rv24htgh289g
X-Goog-Resource-URI: https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events
X-Goog-Resource-State:  exists
X-Goog-Message-Number: 10

那么任何人都可以指导我如何获得事件发生变化的描述。

【问题讨论】:

  • 那么,X-Goog-Resource-ID 不是指事件 ID?
  • @jtmoulia 不幸的是没有。请看下面我的回答。简而言之,您需要进行同步以获取更改的事件。

标签: asp.net google-calendar-api


【解决方案1】:

这是最终且正确的回复(推送通知),或者至少我收到的回复完全相同。我建议您将上次同步日期与频道数据一起保存,并且每次收到此类通知时,您都会调用 Google API 并请求自上次同步以来已更改的事件。我唯一的问题是缺少一件重要的事情——谷歌服务器时间。我的服务器上的时间与谷歌上的时间不完全相同,我必须在发送同步请求之前对 updateMin 参数进行调整(所以它不是简单的“now()”)。在您获得更新的事件后,不要忘记再次保存上次同步日期:)

【讨论】:

【解决方案2】:

您需要进行增量同步(请参阅previous SO answer)。来自the creators themselves,根据我的口味稍作修改:

应用程序需要做的第一件事是订阅新的推送功能,即订阅感兴趣的日历。当日历更改时,Google 会通知您的应用,并且该应用会调用 API 以获取更新。

例如,假设您有一个日历 my_calendar@my-host.com。您的应用托管在具有 my-host.com 域的服务器上,并且应该将推送通知传送到 HTTPS 网络挂钩 https://my-host.com/notification

每次 my_calendar@my-host.com 更改时,Google 日历服务器都会在 https://my-host.com/notification 触发网络挂钩回调。收到回调后,应用需要执行incremental sync

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    相关资源
    最近更新 更多