通过Python在Google Colab中生成Google API access_token

问题描述 投票:0回答:1

我需要从Google Colab内部的Python生成具有某些特定范围access_token['https://www.googleapis.com/auth/bigquery', 'https://www.googleapis.com/auth/cloud-platform']

默认情况下,Google Colab在colabtools中提供了用于验证用户身份的功能。

from google.colab import auth
auth.authenticate_user()
print('Authenticated')

但是生成的凭证文件包含固定范围的列表,不包括我需要的范围。

import os
with open(os.environ['GOOGLE_APPLICATION_CREDENTIALS']) as f:
  print(f.read())
...
"scopes": [
    "https://www.googleapis.com/auth/drive",
    "https://www.googleapis.com/auth/appengine.admin",
    "https://www.googleapis.com/auth/accounts.reauth",
    "https://www.googleapis.com/auth/cloud-platform",
    "https://www.googleapis.com/auth/compute",
    "https://www.googleapis.com/auth/userinfo.email"
  ],
...

我已经尝试使用google-auth类以及enter code here类使用google.auth.Credentialsgoogle.oauth2.Credentials生成有效的凭据令牌。我可以生成类的有效实例,但是当我检查令牌为None时。

是否有一种方法可以通过Python自定义范围为Google API生成有效的access_token

谢谢!

oauth-2.0 google-api access-token google-colaboratory google-api-python-client
1个回答
0
投票

如果您将VM与Google Colab一起使用,则可以使用以下命令(示例)在该vm上设置服务帐户的范围:

gcloud compute instances set-service-account example-instance \
   --service-account [email protected] \
   --scopes compute-rw,storage-ro

然后,在Python中进行身份验证时,生成的凭据将包含正确的范围。

© www.soinside.com 2019 - 2024. All rights reserved.