gpt4 book ai didi

google-drive-api - 处理传入的 Google Drive 更改的 404 错误

转载 作者:行者123 更新时间:2023-12-01 06:09:59 25 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序使用 watch endpoint 监视用户帐户的更改。 .在每次传入更改时,我们的应用程序然后使用 get endpoint 检索更改。以便妥善处理。

但是,在某些情况下,检索更改的请求会返回 404 错误。通过将文件从计算机拖到驱动器 UI 中进行上传,我们已经能够使用图像文件(特别是 png 和 jpeg)可靠地重现此问题。奇怪的是,大多数文件类型都不会出现这个问题(就我们所见)。

我们尝试使用指数回退的重试,但似乎变化根本不存在。这是我通过 API 文档中的工具获取的示例响应,用于检索存在此问题的特定更改。

{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Change not found: 18061",
"locationType": "other",
"location": "change"
}
],
"code": 404,
"message": "Change not found: 18061"
}
}

我们正在考虑使用的一种潜在解决方法是使用 modifiedDate 参数对所有用户的文件执行查询,以查找最近 10 秒左右的文件,但直接处理更改是一种更好的操作方式。

更新

我们对此进行了更多研究,并发现了其他一些更改可靠地返回 404 错误的情况:
  • 当任何类型的文件被移动到垃圾箱时(如果您在垃圾箱内打开它,则会发生有效的更改)
  • 从垃圾箱中删除任何类型的文件时

  • 更新 2

    经过一些认真的挖掘,似乎如果我们从 watch 通知中传入的“changeId”数字中减去 1,我们就能够从 API 中检索到一个有效的通知,该通知具有我们期望的确切更改。嗯...

    更新 3

    当垃圾箱中的文件被删除时,我们收到的“changeId”编号必须减少 2 才能接收正确的事件。

    最佳答案

    可能发生的情况是,您收到的更改与紧随其后发生的另一个类似更改合并,并被删除。通常,直接获取通知中更改的 ID 不是一个好主意,因为网络条件和其他问题可能会阻止您的应用程序收到每个单独更改的通知。

    相反,当您收到并推送通知时,您应该将其用作需要同步上次同步后发生的所有更改的信号。在这种情况下,使用 Changes.list() 端点并将 startChangeId 设置为您之前同步到的最后一个更改的 ID。

    关于google-drive-api - 处理传入的 Google Drive 更改的 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33683867/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com