将 gspread 与 oauth 结合使用,每次重新运行代码时都必须重新授权

问题描述 投票:0回答:1
  • 操作系统:Mint Linux 21.3
  • Python:3.10
  • gspread:6.0.0
  • IDE:PyCHARm

我正在尝试使用 gspread 访问谷歌电子表格,并且我已经成功地做到了这一点,但是,每次运行代码时我都必须重新授权。

我已正确设置凭据

如下所示,我指定了授权用户文件的位置,当我第一次运行代码时,它会创建授权用户文件,并且代码运行时会得到预期的结果。

但是,当再次运行代码时,oath方法似乎没有读取该文件,我必须再次授权。再次授权后,代码将按预期运行。

import gspread

SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
SPREADSHEET_ID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

CRED_FILE = "client_secret.json"
AUTH_USER_FILE = 'auth_user.json'

gc = gspread.oauth(credentials_filename=CRED_FILE, scopes=SCOPES, authorized_user_filename=AUTH_USER_FILE)

# Open a sheet from a spreadsheet in one go
spreadsheet = gc.open_by_key(SPREADSHEET_ID)

ws = spreadsheet.get_worksheet(0)

# Update a range of cells using the top left corner address
ws.update([[1, 2], [3, 4]], 'A1')

我错过了什么吗?为什么每次运行都需要授权?我假设工作授权直至其过期。

值得注意的是,我已经使用了 google api 客户端一些,并且在使用它时,一旦授权,我就不必再次授权。 google api 客户端有点超出我的能力,所以我想改用 gspread。

oauth gspread python-3.10
1个回答
0
投票

这里的问题是 gspread 6.0.0 中的一个错误。

降级到 gspread 5.12.4 可以解决该问题,并且该错误修复计划在 gspread 6.0.1 中发布。

错误追踪器在这里: github.com/burnash/gspread/issues/1390

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