Я разработал небольшой скрипт командной строки для отправки счетов с помощью API Gmail. Это работает, но время от времени срок действия токена истекает, и мне нужно перейти к облачным API, чтобы удалить токен и создать новый. Я хотел бы автоматизировать это. Вот ошибка, которую я получил сегодня при запуске скрипта:
raise HttpAccessTokenRefreshError(error_msg, status=resp.status)
oauth2client.client.HttpAccessTokenRefreshError: invalid_grant: Token has been expired or revoked.
Я использую следующий процесс аутентификации, как описано в документации Gmail API для Python:
def main():
"""Shows basic usage of the Gmail API.
Lists the user's Gmail labels.
"""
store = file.Storage('token.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('credentials.json', SCOPES)
creds = tools.run_flow(flow, store)
service = build('gmail', 'v1', http=creds.authorize(Http()))
Чтобы приведенный выше код работал, при первом использовании API вам понадобится файл credentials.json, затем откроется новая вкладка браузера и будет предложено авторизовать API Gmail. Как только это будет сделано, будет создан файл token.json. Я хотел бы создать исключение, которое обрабатывает срок действия токена и создает новое автоматически. Как добиться этого за минимально возможное количество строк кода?