Обработка ошибок

Ошибки могут возникать на разных уровнях. Вы можете получить уведомление разными способами в зависимости от того, где произошла ошибка.

Отсутствуют обязательные параметры OAuth

Если вы забудете установить необходимые параметры OAuth, такие как client_id или область действия, вы увидите сообщение об ошибке, как показано ниже, в консоли JavaScript вашего браузера.

Ошибки консоли JavaScript

Исправить ошибки конфигурации OAuth

Для устранения некоторых ошибок могут потребоваться изменения в консоли API Google .

Неверные значения параметров OAuth

Если вы зададите недопустимые значения для параметров OAuth, например неверный идентификатор клиента, идентификаторы области или значения типа ответа, вы увидите страницу с ошибкой OAuth.

Ошибки OAuth

Ответы об ошибках OAuth

OAuth может вернуть ответ об ошибке, и в этом случае ваша функция callback будет запущена с ответом об ошибке в качестве параметра. Ниже приведен пример ответа об ошибке OAuth.

  {
   
"error":"access_denied"
 
}

Некоторые примеры перечислены ниже.

  1. Пользователь отклоняет запрос OAuth.
  2. Для запроса OAuth с параметром prompt=none пользователь еще не прошел аутентификацию и не имеет предварительно настроенного согласия для запрошенных областей.

В приведенном ниже примере показано, как обрабатывать ответы OAuth об успехе и ошибке.

function myCallback(response) {
 
if (response.error) {
   
// Handle error response
   
... ...
 
} else if (response.code) {
   
// Handle success code response
   
... ...
 
}
}

Ошибки, не связанные с OAuth

OAuth не определяет поведение, когда:

  1. всплывающее окно не открывается.
  2. всплывающее окно закрывается до того, как будет возвращен ответ OAuth.

Эта библиотека фиксирует эти ошибки и запускает error_callback , если он установлен. Обязательно проверьте тип ошибки, как показано ниже. В противном случае логика вашего кода может быть затронута, когда эта библиотека позже будет поддерживать новые типы ошибок.

function myErrorCallback(err) {
 
if (err.type == 'popup_failed_to_open') {
   
// The popup window is failed to open
   
... ...
 
} else if (err.type == 'popup_closed') {
   
// The popup window is closed before an OAuth response is returned
   
... ...
 
}
}

const client = google.accounts.oauth2.initCodeClient({
  client_id
: 'YOUR_GOOGLE_CLIENT_ID',
  scope
: 'https://www.googleapis.com/auth/calendar.readonly',
  ux_mode
: 'popup',
  callback
: myCallback,
  error_callback
: myErrorCallback
});