Я использую gspread в приложении на python для доступа к некоторым бэкэнд-листам Google, которые служат базой данных для приложения. Пользователь должен войти в приложение с помощью браузера в приложении, и сеанс authlib OAuth2 создается с использованием токена, возвращенного в URL-адресе этим методом. Первоначальный вход в систему и доступ работает нормально, но когда токен истекает через час, я перехожу на листы, и приложение перестает работать.
Я не могу понять, как обновить токен с помощью authlib, поэтому мы выбрали библиотеку, потому что она интегрирована с gspread и должна была автоматически обновлять токены auth для вас. Код, который я использую для входа в систему, приведен ниже, но через час не удается выполнить стандартную функцию open_by_key()
из-за проблемы аутентификации.
Я пытался воссоздать клиент golid, но он просто использует тот же токен. Я чувствую, что должен быть способ обновить токен, чтобы продлить его жизнь еще на час, но я не могу найти, как это сделать с помощью 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)