Я использую API Google Диска для доступа к файлам на моем общем диске. Мое серверное приложение использует OAuth2 для получения токена доступа. Затем я использую этот токен в качестве токена-носителя для вызовов 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 с надлежащей областью действия, должен позволить мне делать все. Кажется, это работает для всего остального (доступ к электронным таблицам, документам и т. Д.), Но у меня возникают трудности с загрузкой изображений таким образом.
Вот подробный список запросов и ответов:
- Запрос: вызов OAuth2 для получения токена доступа с моим идентификатором клиента и секретом.
- Ответ: Получен токен доступа. Хороший
- Запрос:
https://www.googleapis.com/drive/v3/files?corpora=teamDrive&includeTeamDriveItems=true&supportsTeamDrives=true&teamDriveId=[myTeamDriveID]
с токеном авторизации в заголовке. - Ответ. Статус 200. Полученный список файлов. Потрясающие.
- Для каждого изображения запросите webContentLink с токеном авторизации в заголовке.
- Запрос:
https://drive.google.com/a/[myTeamDriveDomain]/uc?id=[fileID]&export=download
- Ответ: Статус 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]
- Запрос: получить URL-адрес перенаправления из предыдущего ответа с токеном авторизации в заголовке
- Ответ: статус 302. Перенаправлен на
https://www.google.com/a/]myTeamDriveDomain]/ServiceLogin?passive=1209600&osid=1&continue=[previousRedirectURL]&followup=[previousRedirectURL]
- Запрос: получить URL-адрес перенаправления из предыдущего ответа с токеном авторизации в заголовке
- Ответ: Статус 200. Это страница входа в систему. Во время отладки, если я введу свои учетные данные, я получу изображение, но сервер не может этого сделать. Он должен иметь возможность использовать токены доступа
Есть идеи, что я делаю не так?