gmail 是否会通过其 /watch API 向监视的邮箱提供虚假历史记录 ID?

问题描述

背景:我为我的邮箱调用users/{id}/watch,并且 gmail 成功地将事件分派到我的 Node GCP PubSub 订阅处理程序。我有一个对应于邮箱的 redis 键,并将我的应用程序处理的最新 historyId 存储为它的值。每当我收到一条消息时,我都会使用该键的值(下面日志中的 lastKNownHistory)来调用 users/{id}/history,并获取生成该 historyId 键的事件以来的所有事件。然后我使用 Math.max 操作返回的 historyIds 的 /history 更新 redis 键。 (gmail 开发者文档对此partial synchronization strategy 进行了概述。)

主题处理程序接收一个 historyId 作为其负载的一部分。但是,/history API 永远不会返回此密钥。作为来自 pubsub 主题的消息的一部分提供的 historyId 是假的,还是对应于真实的邮箱事件?

清理日志:

[email: my-email-address] [message.historyId: 4137307]  lastKNownHistory:  4137247
[email: my-email-address] [message.historyId: 4137307]  fetched history events [4137250,4137309,4137310,4137311] 

在上面的例子中,你可以看到我的 redis historyId 比消息的 historyId 早,但是当我用它来获取时,我没有返回 4137307 作为一个获取的事件。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)