Ответ 1
Сначала прочитайте официальные документы: Перейдите на Google Drive API v3
Скачать
Download изменилось. Поле downloadUrl
больше не существует. Теперь это может быть достигнуто с помощью этого:
service.files().get(fileId).executeMediaAndDownloadTo(outputStream);
Я попробовал новое поле webContentLink
, но он возвращает содержимое HTML, а не содержимое файла. Другими словами, он дает вам ссылку на веб-интерфейс веб-диска.
Загрузить
Загрузка только требует изменить слово insert
для create
, не более того.
Корзина/Обновление
Я потратил некоторое время на это. Используется для простого service.files().trash(fileId).execute()
.
Документы говорят
files.trash → files.update с {'trashed': true}
Пример кода для update
на v2 делает файл get
в файле, устанавливает новые значения и затем вызывает update
.
В v3, используя update
, как это делает это исключение:
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "The resource body includes fields which are not directly writable.",
"reason" : "fieldNotWritable"
} ],
"message" : "The resource body includes fields which are not directly writable."
}
Решение состоит в том, чтобы создать пустой File
параметр только для новых значений:
File newContent = new File();
newContent.setTrashed(true);
service.files().update(fileId, newContent).execute();
Примечание: File
относится к com.google.api.services.drive.model.File
(это не java.io.File
).
List
Файлы, возвращаемые service.files().list()
, теперь не содержат информации, т.е. каждое поле имеет значение NULL. Если вы хотите, чтобы list
на v3 вел себя как в v2, назовите его следующим образом:
service.files().list().setFields("nextPageToken, files");
Документы Поиск файлов используют setFields("nextPageToken, files(id, name)")
, но нет документации о том, как получить всю информацию для файла. Теперь вы знаете, просто включите "файлы".
Поля
Полные ресурсы больше не возвращаются по умолчанию. Используйте параметр запроса
fields
для запроса определенных полей, которые будут возвращены. Если значение не указано, возвращается только подмножество обычно используемых полей.
Эта последняя часть не совсем верна, поскольку в некоторых случаях вы вынуждены использовать setFields
. Например, если вы используете service.about().get().execute()
, вы получите эту ошибку:
"The 'fields' parameter is required for this method."
который решается путем вызова service.about().get().setFields("user, storageQuota").execute()
, например.
В конце документа указывается как:
Параметр запроса
fields
должен быть указан для методов, возвращающих
Для остальных изменений просто следуйте таблице Google в документах.