Создание токена на предъявителя для AutoML, Computer Vision из библиотеки Python - PullRequest
0 голосов
/ 30 октября 2018

На основании этой документации Google Я могу сгенерировать токен для запроса Computer Vision API , вызвав его в терминале gcloud auth application-default print-access-token. Тем не менее, я собираюсь вызвать запрос из моего кода Python, и я пытаюсь сгенерировать из кода Python, что-то вроде ниже ...

Код основан на этой странице документации

with open( environ.get(KEY_ENV_VARIABLE) ) as f:
    key = json.load(f)

iat = time.time()
exp = iat + 3600
payload = {
    'iss': key.get('client_email'),
    'sub': key.get('client_email'),
    'aud': 'https://vision.googleapis.com/google.cloud.automl_v1beta1',
    'iat': iat,
    'exp': exp
}
additional_headers = { "kid": key.get("private_key_id") }
signed_jwt = jwt.encode(payload, key.get("private_key"), headers=additional_headers, algorithm='HS256')
return signed_jwt.decode('utf-8')

Он генерирует токен, однако отличается по длине от токена, сгенерированного инструментом gcloud.

Я знаю, что самым простым и быстрым грязным исправлением будет вызов os.system('gcloud auth application-default print-access-token'). Однако я не хочу делать грязный путь, если это возможно, и хочу генерировать токен правильным образом.

1 Ответ

0 голосов
/ 06 ноября 2018

Попробуйте следовать этой документации , чтобы загрузить учетную запись службы. После того, как вы получите ключ, вам нужно будет установить GOOGLE_APPLICATION_CREDENTIALS путь к файлу ключа.

...