我需要从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.Credentials库google.oauth2.Credentials生成有效的凭据令牌。我可以生成类的有效实例,但是当我检查令牌为None时。
是否有一种方法可以通过Python自定义范围为Google API生成有效的access_token
?
谢谢!
如果您将VM与Google Colab一起使用,则可以使用以下命令(示例)在该vm上设置服务帐户的范围:
gcloud compute instances set-service-account example-instance \
--service-account [email protected] \
--scopes compute-rw,storage-ro
然后,在Python中进行身份验证时,生成的凭据将包含正确的范围。