Если вы не собираетесь использовать какую-либо из вспомогательных библиотек, а также новичок, самая сложная часть реализации загрузки в GCS, скорее всего, будет проходить проверку подлинности. Давайте проигнорируем это пока.
Самый простой способ загрузить объект в Google Cloud Storage, чтобы сделать вызов HTTPS для storage.googleapis.com, который выглядит следующим образом:
PUT /your-bucket-name/your-object.txt HTTP/1.1
Authorization: (YOUR ACCESS TOKEN GOES HERE)
Content-Length: 20
Content-Type: text/plain-or-whatever; charset=utf-8
Host: storage.googleapis.com
User-Agent: YourApplication/1.0
This is a test file
Это будет загружать файл с именем «ваш-объект. txt "типа" text/plain-or-whatever "в ведро" your-bucket-name ", с содержимым" Это тестовый файл ".
Если ваше ведро позволяет анонимным пользователям загружать файлы (вы не должны этого делать), тогда просто не включайте строку авторизации, и все готово.
Теперь, поскольку вы действительно не хотите использовать какие-либо клиентские библиотеки и, предположительно, включают в себя библиотеки OAuth от Google, вам потребуется реализовать авторизацию самостоятельно, поэтому позвольте мне дать вам обзор.
Прежде всего, если вы хотите попробовать это немедленно, установите инструмент «gcloud», войдите в систему с «gcloud auth login» и распечатайте токен доступа с помощью gcloud auth print-access-token
. Затем используйте заголовок авторизации Authorization: Bearer whatever.gcloudprintedout
. Таким образом, вы можете быстро и быстро работать с GCS. Но токен продлится всего час или около того, поэтому вам нужно будет реализовать OAuth по-настоящему.
API Google Cloud API использует OAuth для обработки своих запросов, который является мощным, но не простым механизмом auth. Там в обширной документации о том, как OAuth с Google работает: https://developers.google.com/identity/protocols/OAuth2
И есть также более общая информация о санкционировании Google Облако запросов: https://cloud.google.com/docs/authentication
Если запустить приложение на технологии Google Cloud, как App Engine или GCE, авторизация будет несколько проще, но я предполагаю, что вы запускаете это на своей машине. Я также предполагаю, что вы хотите, чтобы ваше приложение имело свою собственную идентификацию, вместо того, чтобы просто войти в систему как часть потока загрузки. В таком случае вам понадобится учетная запись службы, которая будет иметь связанный с ней закрытый ключ.
Основной поток для учетной записи службы заключается в том, что вы создадите запрос JWT для учетных данных доступа, затем криптографически подписываете этот запрос своим личным ключом, а затем отправляете этот подписанный запрос в Google. Он вернет вам токен, который затем может быть передан в ваш фактический запрос на загрузку позже. Вы можете продолжать использовать этот токен до истечения срока его действия, после чего вам потребуется создать другой запрос JWT для запроса другого токена.
Опять же, клиентские библиотеки полностью заботятся обо всем этом процессе. Я описываю подход к реализации всего исключительно по своему усмотрению.
спасибо Брэндон за подробный ответ, я прошел весь процесс генерации токена, я смог получить JWT, но когда я добавляю его в myurl в качестве переменной утверждения, он дал мне ошибку запроса BAD: –
ошибка: { «ошибка»: «invalid_grant» «error_description»: «Invalid JWT: Знак должен быть недолгим токен и в разумные сроки» «error_uri»: «» } –
Ваши часы могут быть неправильно, или вы просили слишком много времени: http://stackoverflow.com/questions/30115933/access-token-and-refresh-token-giving-invalid-grant-in-google-plus-in-python/30117441#30117441 –