Błędy obsługi

Błędy mogą występować w różnych warstwach. W zależności od tego, gdzie wystąpił błąd, możesz otrzymać powiadomienie na różne sposoby.

Brak wymaganych parametrów OAuth

Jeśli zapomnisz ustawić wymagane parametry OAuth, takie jak client_id lubscope, w konsoli JavaScript swojej przeglądarki zobaczysz komunikat o błędzie podobny do poniższego.

Błędy konsoli JavaScript

Naprawianie błędów konfiguracji protokołu OAuth

Do naprawienia niektórych błędów może być konieczne wprowadzenie zmian w konsoli interfejsów API Google.

Nieprawidłowe wartości parametru OAuth

Jeśli ustawisz nieprawidłowe wartości parametrów OAuth, takie jak nieprawidłowy identyfikator klienta, identyfikatory zakresu lub wartości typu odpowiedzi, zobaczysz stronę błędu OAuth.

Błędy OAuth

Odpowiedzi na błędy OAuth

OAuth może zwrócić odpowiedź o błędzie. W takim przypadku funkcja callback zostanie aktywowana z odpowiedzią o błędzie jako parametrem. Poniżej znajdziesz przykładową odpowiedź na błąd OAuth.

  {
    "error":"access_denied"
  }

Poniżej przedstawiamy niektóre przykłady.

  1. Użytkownik odrzuca żądanie OAuth.
  2. W przypadku żądania OAuth z parametrem prompt=none użytkownik nie został jeszcze uwierzytelniony i nie wyraził wstępnie zgody na żądane zakresy.

Przykład poniżej pokazuje, jak postępować w przypadku powodzenia i błędu odpowiedzi OAuth.

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

Błędy inne niż OAuth

OAuth nie określa zachowań, gdy:

  1. nie otwiera się wyskakujące okienko.
  2. Wyskakujące okienko zostanie zamknięte, zanim zostanie zwrócona odpowiedź OAuth.

Ta biblioteka rejestruje te błędy i aktywuje error_callback, jeśli jest ustawiony. Sprawdź typ błędu taki jak poniżej. Jeśli tego nie zrobisz, obsługa nowych typów błędów w tej bibliotece może się zmienić.

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
});