Я работаю над приложением, которое отслеживает учетную запись пользователя для изменений с помощью watch endpoint. При каждом входящем изменении наше приложение затем отправляется на получение изменения с помощью get endpoint, чтобы его можно было правильно обработать.Обработка ошибок 404 при внесении изменений в Google Диск
Однако есть определенные случаи, когда запрос на получение изменения возвращает ошибку 404. Мы смогли достоверно воспроизвести эту проблему с файлами изображений, в частности 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 секунд или около того, но обработка изменения непосредственно является гораздо более удобный способ работы.
Update
Мы играли с этим немного больше и нашел некоторые другие случаи, когда изменения надежно возвращать ошибки 404:
- Когда файл любого типа перемещается в мусор (если открыть его, когда он находится в помойке, действительное изменение приходит через)
- когда файл любого типа удаляется из корзины
Update 2
После некоторого серьезного копания, оказывается, что если вычесть 1 из «changeId» число поступающих из уведомления часов, мы можем получить действительное уведомление от API, который имеет точное изменение мы ожидаем. Хммм ...
Update 3
Когда файл, который находится в мусор удаляется, «changeId» число, которое мы получаем должно быть уменьшено на 2, чтобы получить надлежащее событие.
id введите это в список проблем с драйверами api, который поддерживает Google –
Да, это может быть путь. Я решил, что сначала буду следовать их предложениям: https://developers.google.com/drive/web/support – Aaron