Наше приложение нуждается в полном списке файлов и папок пользователя. Мы используем files.list()
через библиотеку Javascript
(по существу тот же код, что и в официальном API reference
).files.list() воспроизводимо возвращает неполный список в области «drive.files»
Мы используем область «drive.files
».
Рассматривая ответ на список, мы обнаруживаем, что некоторые файлы всегда отсутствуют. Я сделал различные тесты, чтобы понять проблему:
- Файлы явно существуют. Они отображаются в
Google Drive Webapp
и, если я явно запрашиваю их через ID, я могу получить их через API без проблем. - Это воспроизводимый, всегда одни и те же файлы отсутствуют.
- Это не преходяще. Я пробовал на следующий день и все те же файлы отсутствуют. Я знаю несколько странных эффектов в API, которые уходят через некоторое время, но не в этот.
- Это не единичная вещь (например, во время загрузки некоторые странные вещи поступили не так). Если я повторяю с совершенно другой учетной записью Google, файлы снова отсутствуют. Из небольшого набора из 147 загруженных файлов в одном тесте 4 пропускается вызов
files.list
, в другом тесте с теми же 147 файлами на другой учетной записи отсутствуют 23 файла. - Это происходит только тогда, когда я использую область
drive.files
. Если я ослаблю область доdrive
, все файлы будут возвращены. Если посмотреть на «Детали» в Google Диске Webapp, то отсутствующие файлы будут отображаться как созданные нашим Приложением. Таким образом, похоже, что они каким-то образом потеряли свое происхождение. - Это также происходит, когда я указываю поисковый запрос. Если я вызову файл.list с поисковым термином «q: modifiedDate>» 2012-06-04T12: 00: 00 '", который также должен вернуть все файлы, те же файлы отсутствуют.
- Я повторно реализовал то же самое, что и чистый вызов REST API, чтобы исключить, что это проблема с библиотекой Javascript. Ошибка остается.
Update: Я мог отслеживать его вниз к проблеме с пейджинговой и параметром maxResults
. Если я использую разные значения, API возвращает другое количество элементов:
С maxResults=100
Я получаю 100 + 100 + 7 = 207.
С maxResults=99
Я получаю 99 + 99 + 28 = 226.
С maxResults=101
Получаю 101 + 101 + 0 = 202.
Последний результат интересный, который дал мне nextLink
, указав, что результатов больше, но массив элементов в последнем ответе был фактически пуст. Это может указывать на ошибку.
Тем не менее, это происходит только в области drive.file
, подсчеты согласуются в полном объеме drive
.
Я был бы рад услышать идеи об обходном пути. Я знаю о других способах отслеживания файлов пользователей, например. используя фид изменений. Я использую это уже, но для определенной части нашего приложения мне просто нужен надежный и полный список всех элементов нашего приложения в учетной записи пользователя.
Еще одно примечание. У нас были другие проблемы с областью «drive.files» (см. Listing files with search query returns out-of-scope results (drive.files.list call, using drive.files scope)). Это оказалось легким решением. Возможно, эта проблема связана.
Звучит как ошибка, мы смотрим на нее. –
@BurcuDogan Есть ли какие-либо обновления по этому поводу? Есть ли страница изменений, которую я могу проверять время от времени, чтобы проверить, исправлено ли это? – auval
Есть ли какие-либо обновления по этой проблеме? Мы неоднократно повторяем эту проблему с ненадежными списками файлов, в то время как мы расширяем интеграцию нашего приложения с Google Диском. – Lenau