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 tego, gdzie wystąpił błąd.

Wymagane parametry OAuth

Jeśli zapomnisz ustawić wymagane parametry OAuth, np. client_id lub scope, w konsoli JavaScript przeglądarki pojawi się komunikat o błędzie.

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 OAuth.

  {
    "error":"access_denied"
  }

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.

Ten przykład pokazuje, jak obsługiwać odpowiedzi OAuth dotyczące powodzenia i błędów:

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