我可以使用获取服务帐户的访问令牌
gcloud auth print-access-token --impersonate-service-account=<my-service-account>
假设我从某个地方(例如在环境变量中)有这样的令牌,我如何使用它来验证例如Google Cloud Storage Client SDK?
我查看了Google Auth包中各种包的文档,但我发现没有一个似乎接受令牌作为授权方法。
我可以使用获取服务帐户的访问令牌
gcloud auth print-access-token --impersonate-service-account=<my-service-account>
假设我从某个地方(例如在环境变量中)有这样的令牌,我如何使用它来验证例如Google Cloud Storage Client SDK?
我查看了Google Auth包中各种包的文档,但我发现没有一个似乎接受令牌作为授权方法。
如果您查看需要提供更多配置数据(例如项目 ID 等)的代码,我不确定访问令牌对于 Python SDK 是否足够......(也可以通过环境设置,但需要完成)。通常,如果您设置了所有正确的环境变量,则身份验证应该使用令牌工作。
您遇到的错误是什么,也许您缺少其他一些配置?
我已经能够在 python 中获取和使用 GCloud 访问令牌,如下所示(进程所有者需要该Service Account Token Creator
服务的权限):
from google.cloud.iam_credentials_v1 import IAMCredentialsClient
from google.oauth2.credentials import Credentials
import googleapiclient.discovery
response = IAMCredentialsClient().generate_access_token(
name=f'projects/-/serviceAccounts/{service_id}',
scope=['https://www.googleapis.com/auth/gmail.insert'],
)
service = googleapiclient.discovery.build(
'gmail',
'v1',
credentials=Credentials(response.access_token), <= use your token here
)
不幸的是,我无法使用这种语法设置域范围的委派。