从 Python 库为 AutoML、计算机视觉生成承载令牌
Generating Bearer Token for AutoML, Computer Vision from Python Library
基于此 Google documentation I can generate the token for Computer Vision API request,在终端 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')
。但是,如果可能的话,我不想采用肮脏的方式,而是希望以正确的方式生成令牌。
尝试按照此 documentation 下载服务帐户。获得密钥后,您需要将 GOOGLE_APPLICATION_CREDENTIALS
设置为密钥的文件路径。
基于此 Google documentation I can generate the token for Computer Vision API request,在终端 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')
。但是,如果可能的话,我不想采用肮脏的方式,而是希望以正确的方式生成令牌。
尝试按照此 documentation 下载服务帐户。获得密钥后,您需要将 GOOGLE_APPLICATION_CREDENTIALS
设置为密钥的文件路径。