API Google Диска webContentLink перенаправляет на другой домен - PullRequest
0 голосов
/ 01 февраля 2019

Я использую Google Drive API для доступа к файлам на моем командном диске.Мое серверное приложение использует OAuth2 для получения токена доступа.Затем я использую этот токен в качестве токена Bearer для вызовов API-дисков.Когда я пытаюсь загрузить образ с моего командного диска, один из файлов, перечисленных при вызове конечной точки https://www.googleapis.com/drive/v3/files:

{ "id": "<longAlphaNumericID>", "mimeType": "image/jpeg", "webContentLink": "https://drive.google.com/a/<myTeamDriveDomain>/uc?id=SOME_GOOGLE_DRIVE_ID&export=download", "fileExtension": "jpg", "size": "108794" }

Когда я пытаюсь загрузитьwebContentLink с тем же маркером Bearer в заголовках запроса, я перенаправлен на https://doc -0k-08-docs.googleusercontent.com / docs / securesc / ...

Токен на предъявителя, похоже, не работает для этого домена googleusercontent.com, и мой сервер в конечном итоге перенаправляется на страницу входа (что не подходит для серверного приложения).

При попытке сделать этот второйзапрос, я заметил, что заголовки ответа содержат:

Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: false Access-Control-Allow-Methods: GET,OPTIONS P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/answer/151657?hl=en for more info."

Я предполагаю, что этот последний заголовок указывает мне на проблему, и он как-то связан с перенаправлением, идущим в другой домен, но я не уверен, что мне нужно с этим делать.Я думал, что токен доступа, предоставленный через OAuth2 с соответствующей областью, должен позволить мне делать все.Кажется, он работает для всего остального (доступ к электронным таблицам, документам и т. Д.), Но у меня возникают трудности с загрузкой изображений таким образом.

Вот подробный список запросов и ответов:

  1. Запрос: вызов OAuth2 для получения токена доступа с моим идентификатором клиента и секретом.
  2. Ответ: Получен токен доступа.Хорошо
  3. Запрос: https://www.googleapis.com/drive/v3/files?corpora=teamDrive&includeTeamDriveItems=true&supportsTeamDrives=true&teamDriveId=[myTeamDriveID] с токеном авторизации в заголовке.
  4. Ответ.Статус 200. Получен список файлов.Потрясающе.
  5. Для каждого изображения запрашивайте webContentLink с токеном авторизации в заголовке
  6. Запрос: https://drive.google.com/a/[myTeamDriveDomain]/uc?id=[fileID]&export=download
  7. Ответ: Состояние 302 с заголовком P3P CP="This is not a P3P policy! Перенаправлено наhttp://docs.google.com/a/[myTeamDriveDomain]/nonceSigner?nonce=[alphaNumericID]&continue=https://doc-0g-08-docs.googleusercontent.com/docs/securesc/[longAlphaNumericID]/[longAlphaNumericID]/[longNumericID]/[longNumericID]/[longNumericID]/[longAlphaNumericID]?e%3Ddownload%26h%3D[longNumericID]&hash=[hashValue]
  8. Запрос: Получить URL перенаправления из предыдущего ответа с токеном авторизации в заголовке
  9. Ответ: Статус 302. Перенаправлен на https://www.google.com/a/]myTeamDriveDomain]/ServiceLogin?passive=1209600&osid=1&continue=[previousRedirectURL]&followup=[previousRedirectURL]
  10. Запрос: Получить URL перенаправленияпредыдущий ответ с токеном авторизации в заголовке
  11. Ответ: Статус 200. Это страница входа.Во время отладки, если я введу свои учетные данные, я получу изображение, но сервер не может сделать это.Нужно уметь использовать токены доступа

Есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 01 февраля 2019

Если вы хотите загрузить содержимое файла в свое приложение, вы не используете webContentLink.Вместо этого вы просто get идентификатор файла с alt=media (для двоичных файлов) или экспортируете в определенный формат (для документов Google).Смотри https://developers.google.com/drive/api/v3/manage-downloads

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...