有没有办法使用默认服务帐户对 gspread 进行身份验证?

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

如果我想使用

gspread
创建/读取/更新电子表格,我知道首先必须像这样进行身份验证:

import gspread

gc = gspread.service_account()

我还可以指定文件名以指向服务帐户 json 密钥,但是有没有办法告诉

gspread
使用默认服务帐户凭据而不指向 json?

我的用例是,我想在已经带有 IAM 角色的虚拟机(或云函数)中运行

gspread
,但我似乎不知道从哪里获取 json 文件。我也不想将 json 不必要地复制到虚拟机。

python google-sheets google-cloud-platform gspread
2个回答
2
投票

您可以使用 google.auth 获取默认服务帐户的凭据。 然后您可以使用 gspread.authorize() 和这些凭据:

import google.auth
import gspread

credentials, project_id = google.auth.default(
    scopes=[
        'https://spreadsheets.google.com/feeds',
        'https://www.googleapis.com/auth/drive'
    ]
)
gc = gspread.authorize(credentials)

0
投票

根据用例,云函数具有运行时服务帐户功能,允许您使用默认服务帐户,或者您可以将任何服务帐户附加到云函数。

使用这个你可以在没有json文件的情况下完成这项工作。

import google.auth

credentials, project_id = google.auth.default()
© www.soinside.com 2019 - 2024. All rights reserved.