Как получить токен на предъявителя 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
для ваших запросов весь день, не беспокоясь о токене доступа вообще.