Obsługa błędów

Błędy mogą występować w różnych warstwach. Powiadomienia możesz otrzymywać 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, takie jak client_id lub scope, w konsoli JavaScript przeglądarki pojawi się komunikat o błędzie.

Błędy w konsoli JavaScript

Rozwiązywanie 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 komunikatem o błędzie jako parametrem. Oto przykładowa odpowiedź na błąd OAuth.

  {
    "error":"access_denied"
  }

Przykłady obejmują:

  1. Użytkownik odrzuca żądanie OAuth.
  2. W przypadku żądania OAuth z parametrem prompt=none użytkownik nie jest jeszcze uwierzytelniony i nie skonfigurował wcześniej zgody na żądane zakresy.

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

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

Błędy niezwiązane z OAuth

OAuth nie określa zachowań w przypadku:

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

Biblioteka przechwytuje te błędy i w razie potrzeby wywołuje funkcję error_callback. Sprawdź typ błędu. W przeciwnym razie logika kodu może ulec zmianie, 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
});