【问题标题】:Gmail API: users.history.list returns "Not Found" when using pageTokenGmail API:users.history.list 在使用 pageToken 时返回“未找到”
【发布时间】:2017-11-17 03:20:08
【问题描述】:

对于我们的一位用户(并且只有一位),我们在调用 gmail.users.history.list 时经常收到“404 Not Found”错误。具体来说,当我们对来自gmail.users.history.list 的响应(即给出pageToken)进行分页时,就会发生这种情况。

list 方法在 Gmail 推送通知指示用户有一个新的 hisotryId 时被调用,此时我们使用他们的上一个历史 ID 来获取到目前为止的所有更改。对list 的第一次调用总是成功,但是当使用从初始响应中提供的给定pageToken 时,调用会失败。

奇怪的是,当我们在日志中看到这些失败,然后稍后手动尝试相同的调用时,它们工作得很好。

有什么想法吗?提前致谢!

【问题讨论】:

  • 在提供pageToken 时,您是否还在第二次通话中提供hisotryId?
  • @Tholle 是的,我是。我使用与初始通话相同的历史 ID。我相信这是使用它的正确方法,并且它似乎适用于该用户之外的大多数其他 history.list 调用

标签: gmail-api


【解决方案1】:

如果您使用与初次通话相同的历史记录 ID,则可能是您使用了无效的历史记录 ID。正如Users.history: list 中提到的,

historyId 通常至少一周有效,但在极少数情况下可能只有几个小时有效。

按照建议尝试full synchronization,

如果您收到 HTTP 404 错误响应,您的应用程序应该执行完全同步。

您可能希望查看此相关SO post 以获得更多见解。

【讨论】:

    【解决方案2】:

    我注意到,如果您的 startHistoryId 太旧并且已超出 Gmail 的内部通知队列,也会发生这种情况。


    当我需要在很长一段时间后测试此功能但没有更新任何本地历史 ID 时,这发生在我的开发中。相比之下,我们所有的生产和暂存环境都表现良好。

    【讨论】:

      猜你喜欢
      • 2018-05-15
      • 1970-01-01
      • 2012-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      相关资源
      最近更新 更多