Ошибка 401 при сбое сборки googleapiclient? - PullRequest
0 голосов
/ 21 мая 2019

В настоящее время я пытаюсь уловить крайний случай, когда пользователь удаляет мое приложение как стороннее приложение, не уведомляя нас о событии.В настоящее время я не знаю, каким образом Google мог бы сообщить мне, если токен был отозван, пока я не получу google.auth.exceptions.RefreshError: ('invalid_grant: Token has been expired or revoked.', '{\n "error": "invalid_grant",\n "error_description": "Token has been expired or revoked."\n}')

. Я пытался вручную «пинговать» клиент Google, прежде чем авторизовать пользователя., но это кажется немного медленнее, чем просто обнаружение и обработка ошибки при ее возникновении.Я также попытался напрямую импортировать ошибку аутентификации.import google.auth.exceptions.RefreshError as AuthError

Получение учетных данных:

storage = Storage(GCalUser, 'gcal_user', request.user, 'credentials')
user_credentials = storage.get()

Фактический вызов:

try:
    calendar_service = googleapiclient.discovery.build('calendar', 'v3', credentials=user_credentials)
    print("Error 2: " + str(calendar_service))
except calendar_service:
    pass

Поиск способа перенаправить пользователя на другую страницу при возникновении ошибки наавт.В настоящее время это просто не удается с google.auth.exceptions.RefreshError: ('invalid_grant: Token has been expired or revoked.', '{\n "error": "invalid_grant",\n "error_description": "Token has been expired or revoked."\n}')

1 Ответ

0 голосов
/ 21 мая 2019

Исправлено явное полное импортирование ошибки из модуля from google.auth.exceptions import RefreshError. Оказывается, ошибка не выдается при сборке с учетными данными пользователя, а выдается при выполнении с использованием API.

try:
    calendar_list = calendar_service.calendarList().list(pageToken=page_token, minAccessRole="writer").execute()
except RefreshError:
    print("Hello debugging!")
...