gpt4 book ai didi

python - 通过云功能访问 Google 表格 Python API 的身份验证问题

转载 作者:行者123 更新时间:2023-11-28 18:06:34 25 4
gpt4 key购买 nike

我正在尝试使用云函数和 python 中的工作表 API 访问 Google 工作表,但出现 403 权限错误。我已经创建了一个服务帐户,导出了 key (包含在我正在上传的云函数 zip 中)并为该服务帐户提供了访问工作表所需的 API 范围(我已经尝试了 https://www.googleapis.com/auth/spreadsheetshttps://www.googleapis.com/auth/drive )。这是代码:

import httplib2
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials

def main(request):
scope = ['https://www.googleapis.com/auth/spreadsheets','https://www.googleapis.com/auth/drive']

credentials = ServiceAccountCredentials.from_json_keyfile_name('client_secrets.json', scope)

service = build('sheets', 'v4', http=credentials.authorize(httplib2.Http()))

spreadsheet_id = 'id-of-the-google-sheet'

range = 'Sheet1!A:D'

response = service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range).execute()

cols = response.get('values', [])[0]
return cols[0]

要求.txt:

google-api-python-client
oauth2client
google-auth-httplib2
google-auth

如果我明确与服务帐户共享 Google 工作表,则身份验证有效并且我可以访问工作表数据。问题是,为什么这不能通过以 Google 帐户管理员身份应用适当的 API 范围来实现?

最佳答案

Google 云端硬盘权限位于范围之上。请求的身份验证需要范围,但云端硬盘权限(以及扩展名为表格)决定了谁有权访问哪个文件。如果调用帐户(在本例中为服务帐户)无权访问相关工作表,您将收到一直收到的 403。

在管理控制台中设置范围与权限没有直接关联。

还有一点要注意,如果默认情况下您将文档共享给 G Suite 帐户中的每个人,您可以使用域范围委派 (1) 并使用 serviceaccount 在 G Suite 中模拟用户(如 super 管理员)领域。您不需要与服务帐户本身共享每个文档。

(1) This one is for the Admin SDK ,但这是包含最佳示例的文章。您对那里的凭据对象感兴趣。您还可以使用 .json IIRC 创建对象。

关于python - 通过云功能访问 Google 表格 Python API 的身份验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53124235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com