问题描述
我使用 Google Calendar API v3 来检索用户的 CalendarList
,每个 CalendarListEntry
都包含有关日历的基本信息,例如摘要(标题)、说明等。
返回的 CalendarListEntry
具有 etag
属性,根据 Google 文档,该属性应在修改日历时更改。
但在测试期间,我更改了 Google 日历的名称、说明等,它们根本不会触发任何 etag
更新。
那么如何在不与我的应用中的本地副本进行全面比较的情况下确定日历的信息(不是事件,而是日历的元数据,如标题等)是否发生了变化?
解决方法
这可能是一个错误
此问题已在此处报告:
https://issuetracker.google.com/issues/180946049
也许这是一个错误。给它一个 ☆,让 Google 知道它会影响您。
解决方法
虽然 CalendarList list
请求 etag 不反映日历名称的更改,但 Calendar get
请求可以。
https://developers.google.com/calendar/v3/reference/calendars/get
- 列出日历
- 遍历 ID 并为每个日历发出一个简单的获取请求。
更新
没有注意到 documentation 中涵盖了对 etags 的非普遍支持:
每个资源都有一个版本字段,每次资源更改时都会更改 - etag 字段。 Etags 是 HTTP 的标准部分,日历 API 支持两种情况:
- 关于资源修改以确保在此期间没有对该资源进行其他写入(有条件修改)
- 关于资源检索,仅在资源发生变化时检索资源数据(条件检索)
所以这不是错误,而是“按预期工作”。
如果您想更改此设置,则需要提交功能请求!