gpt4 book ai didi

python - 通过域范围委派模拟用户的服务帐户访问 Google Sheets API 失败

转载 作者:行者123 更新时间:2023-12-04 09:00:31 27 4
gpt4 key购买 nike

示例代码

from google.oauth2 import service_account 
import pygsheets

creds = service_account.Credentials.from_service_account_file(
'my/path/to/credentials.json',
scopes=('https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive'),
subject='account@mydomain.com'
)
pg = pygsheets.authorize(custom_credentials=creds)
pg.open_by_url('https://docs.google.com/spreadsheets/d/my_spreadsheet_id/edit#gid=my_sheet_id')
有问题的行为
最后一行失败 Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested.预期行为
最后一行提供了一个用于访问 Google Sheets 的对象。
附加信息
  • 为服务帐户启用了域范围的委派,subject帐户在域
  • 工作表与 subject 共享帐号
  • 当我不提供 subject并直接与服务帐户共享工作表,它可以工作

  • 环境
  • python==3.6.9
  • pygsheets==2.0.3.1
  • google-auth==1.6.3
  • 最佳答案

    使用域范围委派时要考虑
    默认情况下不启用域范围的委派。要允许它,您需要按照 documentation 中描述的步骤进行操作。 .

  • 步骤:在 GCP 控制台中:
  • 您需要激活复选框 Enable G Suite Domain-wide Delegation对于您要用于此类目的的每个服务帐户
    要使用服务帐户模拟用户,您需要在管理控制台中授予必要的权限
  • 在管理控制台中:
  • 必须在管理控制台中授权服务帐户在模拟用户时所需的任何范围
  • 为此,请转至 Main menu menu> Security > API controls.
  • 通过其 Client ID 添加(如果尚未完成)感兴趣的服务帐户,为其提供所需的所有范围并授权
  • 如果需要,您可以在以后随时修改范围
  • 关于python - 通过域范围委派模拟用户的服务帐户访问 Google Sheets API 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63583612/

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