Как получить токен на предъявителя GCP программно

gcloud auth print-access-token дает мне токен на предъявителя, который я смогу использовать позже. Токен выглядит так:Authorization: Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg

Как я могу получить такой токен без использования gcloud, предпочтительно через некоторый код на python.

#!/usr/bin/python

from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
credentials.get_access_token()
token1 = credentials.access_token
# magic piece of code to convert token1 into the 
# example Bearer ya29.AHES6ZRVmB7fkLtd1XTmq6mo0S1wqZZi3-Lh_s-6Uw7p8vtgSwg
# type.

1 ответ

Токен, который генерирует фрагмент кода, является токеном, который вам нужен для заголовка. Вы должны просто иметь возможность установить заголовок "Авторизация" "Bearer "+token1,

Обратите внимание, что маркеры доступа действительно истекают, поэтому, если у вас есть долгоживущее приложение, вы не можете просто сохранить токен доступа и продолжать использовать его вечно. В конце концов вы получите 401, и вам придется получить новый токен доступа.

Лучше всего, чтобы HTTP-вызов автоматически обрабатывал 401, чтобы получить новый access_token. Обычно это также обрабатывает кешированные токены доступа, так что вам не нужно об этом беспокоиться. На самом деле вы можете сделать:

http = credentials.authorize(httplib2.Http())

А потом использовать http для ваших запросов весь день, не беспокоясь о токене доступа вообще.

Другие вопросы по тегам