Obsługa błędów

Błędy mogą wystąpić w różnych warstwach. Powiadomienia mogą być wysyłane na różne sposoby w zależności od miejsca wystąpienia błędu.

Brak wymaganych parametrów OAuth

Jeśli zapomnisz ustawić wymagane parametry OAuth, np. client_id lub scope, w konsoli JavaScript przeglądarki zobaczysz komunikat o błędzie podobny do tego:

Błędy w konsoli JavaScript

Naprawianie błędów konfiguracji OAuth

Aby rozwiązać niektóre błędy, może być konieczne wprowadzenie zmian w Konsoli interfejsów API Google.

Nieprawidłowe wartości parametrów OAuth

Jeśli ustawisz nieprawidłowe wartości parametrów OAuth, np. 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ć komunikat o błędzie. W takim przypadku funkcja callback zostanie wywołana z odpowiedzią błędu jako parametrem. Poniżej znajduje się przykład odpowiedzi na błąd protokołu OAuth.

  {
    "error":"access_denied"
  }

Oto kilka przykładów.

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

Przykład poniżej pokazuje, jak obsługiwać odpowiedzi OAuth z powodzeniem i błędem.

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

Błędy inne niż OAuth

OAuth nie definiuje zachowań, gdy:

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

Ta biblioteka rejestruje te błędy i w razie potrzeby uruchamia error_callback. Sprawdź typ błędu, jak pokazano poniżej. W przeciwnym razie logika kodu może zostać naruszona, gdy biblioteka zacznie obsługiwać nowe typy błędów.

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