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:
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.
- Utwórz identyfikator klienta, jeśli jeszcze go nie ma.
- W przypadku wyskakujących okienek dodaj do
Authorized JavaScript origins
wszystkie domeny, które mogą wywołać bieżący przepływ danych. - Aby zapewnić użytkownikom wygodę przekierowania, dodaj do
Authorized redirect URIs
wszystkie adresy URL, które mogą otrzymywać odpowiedzi autoryzacyjne. - Skonfiguruj ekran zgody OAuth.
- W razie potrzeby prześlij aplikację do weryfikacji.
- Może być konieczne podjęcie dodatkowych działań, aby zapewnić zgodność z zasadami Google dotyczącymi protokołu OAuth 2.0.
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.
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.
- Użytkownik odrzuca żądanie OAuth.
- 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:
- nie otwiera się wyskakujące okienko.
- 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
});