Ошибки могут возникать на разных уровнях. Вы можете получать уведомления разными способами в зависимости от того, где произошла ошибка.
Требуемые параметры OAuth
Если вы забыли установить требуемые параметры OAuth, такие как client_id или область действия, вы увидите сообщение об ошибке в консоли JavaScript вашего браузера.
Исправление ошибок конфигурации OAuth
Для устранения некоторых ошибок могут потребоваться изменения в консоли API Google .
- Создает идентификатор клиента, если это еще не сделано.
- Для всплывающего UX добавьте все домены, которые могут запустить текущий поток, в
Authorized JavaScript origins
. - Для перенаправления UX добавьте все URL-адреса, которые могут получать ответы авторизации, в поле
Authorized redirect URIs
. - Правильно настройте экран согласия OAuth .
- При необходимости отправьте свое приложение на проверку .
- Возможно, вам придется предпринять дополнительные шаги для соответствия политикам Google OAuth 2.0 .
Недопустимые значения параметров OAuth
Если вы зададите недопустимые значения для параметров OAuth, например недопустимый идентификатор клиента, идентификаторы области действия или значения типа ответа, вы увидите страницу с ошибкой OAuth.
Ответы об ошибках OAuth
OAuth может вернуть ответ об ошибке, в этом случае ваша функция callback
будет вызвана с ответом об ошибке в качестве параметра. Ниже приведён пример ответа об ошибке OAuth.
{ "error":"access_denied" }
Вот несколько примеров:
- Пользователь отклоняет запрос OAuth.
- Для запроса OAuth с параметром
prompt=none
пользователь еще не аутентифицирован и не настроил предварительно согласие для запрашиваемых областей.
В этом примере показано, как обрабатывать ответы OAuth об успехе и ошибке:
function myCallback(response) {
if (response.error) {
// Handle error response
... ...
} else if (response.code) {
// Handle success code response
... ...
}
}
Ошибки, не связанные с OAuth
OAuth не определяет поведение, когда:
- всплывающее окно не открывается.
- всплывающее окно закрывается до возврата ответа 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
});