Ошибки могут возникать на разных уровнях. Вы можете получить уведомление разными способами в зависимости от того, где произошла ошибка.
Отсутствуют обязательные параметры OAuth
Если вы забудете установить необходимые параметры OAuth, такие как client_id или область действия, вы увидите сообщение об ошибке, как показано ниже, в консоли JavaScript вашего браузера.
Исправить ошибки конфигурации OAuth
Для устранения некоторых ошибок могут потребоваться изменения в консоли API Google .
- Создает идентификатор клиента, если еще не создан.
- Для всплывающего пользовательского интерфейса добавьте все домены, которые могут запускать текущий поток, в
Authorized JavaScript origins
. - Для пользовательского интерфейса перенаправления добавьте все 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
});