从Python库为AutoML和计算机视觉生成Bearer令牌

时间:2018-10-30 03:41:32

标签: python google-api google-cloud-platform automl google-cloud-automl

基于此Google documentation,我可以通过在终端gcloud auth application-default print-access-token中调用它来生成Computer Vision API request的令牌。但是,我要从我的python代码调用请求,然后尝试从Python代码生成请求,如下所示...

代码基于this documentation page

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 :(得分:0)

尝试遵循此documentation下载服务帐户。获取密钥后,您需要将GOOGLE_APPLICATION_CREDENTIALS设置为密钥的文件路径。