Невозможно получить содержимое файла из Google Drive API
Кажется, я не могу получить содержимое файла через SDK Google Drive. Чтобы воспроизвести проблему, я используюAPI проводник чтобы получить метаданные для небольшого текстового файла:
200 OK
- Show headers -
{
"kind": "drive#file",
"id": "0B75zvzRT_NusaDBtSTVmWWk1cVk",
"etag": "\"B6kWtzuiQYCrVi2MWyRaub0CRyo/MTM1NTgzNDEzMjU5MA\"",
"selfLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusaDBtSTVmWWk1cVk",
"webContentLink": "https://docs.google.com/uc?id=0B75zvzRT_NusaDBtSTVmWWk1cVk&export=download",
"alternateLink": "https://docs.google.com/file/d/0B75zvzRT_NusaDBtSTVmWWk1cVk/edit",
"iconLink": "https://ssl.gstatic.com/docs/doclist/images/icon_10_text_list.png",
"thumbnailLink": "https://lh4.googleusercontent.com/ntOMGJ9Is5KigDUzpOe6xKRqVqHPyeeXPImG1vZTF2FDM5YOyeCZT62FsdBWTnetBA=s220",
"title": "sync.txt",
"mimeType": "text/plain",
"description": "description",
"labels": {
"starred": false,
"hidden": false,
"trashed": false,
"restricted": false,
"viewed": true
},
"createdDate": "2012-12-18T11:49:21.710Z",
"modifiedDate": "2012-12-18T12:35:32.590Z",
"modifiedByMeDate": "2012-12-18T12:35:32.590Z",
"lastViewedByMeDate": "2012-12-18T12:35:32.416Z",
"parents": [
{
"kind": "drive#parentReference",
"id": "0B75zvzRT_NusdVVJeGk2dVc2VHM",
"selfLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusaDBtSTVmWWk1cVk/parents/0B75zvzRT_NusdVVJeGk2dVc2VHM",
"parentLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusdVVJeGk2dVc2VHM",
"isRoot": false
}
],
"downloadUrl": "https://doc-0g-0-docs.googleusercontent.com/docs/securesc/b2hod7vud4bdud0ju4mut5hh2assmdju/rmi0iqd62g0im724ngmc5uva7femfffo/1355832000000/00903399969355284739/00903399969355284739/0B75zvzRT_NusaDBtSTVmWWk1cVk?h=16653014193614665626&e=download&gd=true",
"userPermission": {
"kind": "drive#permission",
"etag": "\"B6kWtzuiQYCrVi2MWyRaub0CRyo/kH0lkP-s4aFu1o5itR2fFqyLM6o\"",
"id": "me",
"selfLink": "https://www.googleapis.com/drive/v2/files/0B75zvzRT_NusaDBtSTVmWWk1cVk/permissions/me",
"role": "owner",
"type": "user"
},
"originalFilename": "sync.txt",
"fileExtension": "txt",
"md5Checksum": "ecd21579645508d1c206d5e6e20fd101",
"fileSize": "156",
"quotaBytesUsed": "156",
"ownerNames": [
"Sam Smith"
],
"lastModifyingUserName": "Sam Smith",
"editable": true,
"writersCanShare": true
}
Затем я нажимаю на ссылку downloadUrl и всегда получаю пустой ответ, то есть ответ 200 с пустым телом. Если я удалюГ.Д. = истина» Параметр с конца url скачивается нормально. В моей программе происходит то же самое, кроме удаления "Г.Д. = истина» также не работает (вероятно, потому что программа работает на сервере, и поэтому я не вошел в свою учетную запись).
Мой главный вопрос: почему ссылка downloadUrl не возвращает ответ без изменения параметров?
ОБНОВЛЕНИЕ: Нашел других людей, сообщающих ту же самую проблемуВот,Вот а такжеВот
РЕШЕНИЕ: ОК, я наконец-то решил это. Похоже, что для запроса GET на downloadURL вам нужно отправить токен доступа в заголовках, т.е.Авторизация: Bearer {ваш токен доступа} " заголовок. НЕ отправляйте маркер доступа как часть строки запроса. Любой другой вызов API, который я использовал в Drive SDK, подходит для токена доступа как части строки запроса - кроме этого.