API 为我提供了两个不同通道的相同资源 ID

问题描述 投票:0回答:2

我正在使用 Google Calendar API 和推送通知来添加频道并观察这些频道中出现的新事件。但是,在跟踪混合日历帐户和事件的奇怪行为时,我发现日历 API 响应的资源 ID 是两个帐户相同。

我不确定这是否是罪魁祸首,但这是文档中资源 ID 的定义

X-Goog-Resource-ID - 标识观看的不透明值 资源。该 ID 在各个 API 版本中都是稳定的。

在我看来,这意味着它应该是独一无二的。毕竟,资源 ID 和通道 ID 是停止通道的必要条件。

来自 google 的两个不同帐户的相同资源 ID 示例

账户1

X-Goog-Resource-State: exists
X-Goog-Channel-Token: 56cab177e67348d9a17c7502a4bad513
X-Goog-Resource-ID: 8KXz6YKChAJDYMTUo0SoKqV8_7E
X-Goog-Channel-ID: ++7mlvx6pEIsTNeMpMwNLw==

账户2

X-Goog-Resource-State: exists
X-Goog-Channel-Token: 4535832bc5cf47f7ae3403c404023bfd
X-Goog-Resource-ID: 8KXz6YKChAJDYMTUo0SoKqV8_7E
X-Goog-Channel-ID: mL+HzrG8/EYc7zRZdQ+6yw==

我的问题是,这是正常行为吗?

google-calendar-api
2个回答
3
投票

推送通知通道不提供单个事件的更新。它仅告诉您日历(事件集合)何时更改。

要查找事件的更改,您需要查找同步。 通过同步,您可以发送上次同步到 List API 端点时获得的令牌。它不会列出所有事件,而是仅列出自上次请求以来发生更改的事件,由同步令牌表示。

您可以在任何时候想要获取事件更改时向 List API 发送消息,但是您描述的推送通知可以帮助您告诉您何时会发生有意义的更改来调用同步。


0
投票

创建监视事件时,您需要传递 id 和 token 属性,以帮助您识别用户及其日历。 因此,当谷歌通过发布请求通知您的端点谷歌日历上的某些内容已更改时,您需要检索请求标头。 您将获得“X-Goog-Channel-Id”,这将是您的观看请求的 ID,“X-Goog-Channel-Token”将作为您的观看请求的令牌返回。 根据提到的属性调用谷歌日历的事件 api 列表,并使用有效的同步令牌来根据您上次的同步获取更新的事件列表。

© www.soinside.com 2019 - 2024. All rights reserved.