我在 python 应用程序中使用 gspread 来访问一些充当应用程序数据库的后端 Google 表格。用户需要使用应用内浏览器登录应用,并使用通过此方法在 url 中返回的令牌创建 authlib OAuth2 会话。初始登录和访问工作正常,但是当令牌在一小时后超时时,我不再访问工作表并且应用程序中断。
我不知道如何使用 authlib 刷新令牌,我们选择该库的原因是因为它与 gspread 集成,并且它应该为您自动刷新身份验证令牌。我用于登录的代码如下,但一个小时后,gspread 函数open_by_key()
由于身份验证问题而失败。
我曾尝试重新创建 gspread 客户端,但这只是使用相同的令牌。我觉得应该有一种方法可以刷新令牌以将其寿命再延长一个小时,但我找不到如何使用 authlib 来做到这一点。
creds = OAuth2Session(clientId, clientSecret, scope=scope, redirect_uri=redirectUrl)
authUrl, state = creds.create_authorization_url('https://accounts.google.com/o/oauth2/v2/auth', response_type='token')
在浏览器中加载authURL
并让用户登录。浏览器将身份验证响应返回为urlString
creds.fetch_access_token(authorization_response=urlString)
gc = gspread.Client(None, creds)
ss = gc.open_by_key(sheetKey)
todaysSheetName = datetime.datetime.now().strftime('%d-%m-%Y')
wks = ss.worksheet(todaysSheetName)