Gestire gli errori

Gli errori possono verificarsi in diversi livelli. Potresti ricevere notifiche in modi diversi, a seconda di dove si verifica l'errore.

Parametri OAuth obbligatori mancanti

Se dimentichi di impostare i parametri OAuth richiesti, ad esempio client_id o scopo, nella Console JavaScript del browser viene visualizzato un messaggio di errore come quello riportato di seguito.

Errori della console JavaScript

Correggere gli errori di configurazione OAuth

Per risolvere alcuni errori, potrebbero essere necessarie modifiche nella console API di Google.

Valori dei parametri OAuth non validi

Se imposti valori non validi per i parametri OAuth, ad esempio ID client non valido, identificatori di ambito o valori di tipo di risposta, viene visualizzata la pagina di errore OAuth.

Errori OAuth

Risposte di errore OAuth

OAuth potrebbe restituire una risposta di errore, nel qual caso la funzione callback verrà attivata con la risposta di errore come parametro. Di seguito è riportato un esempio di risposta di errore OAuth.

  {
    "error":"access_denied"
  }

Di seguito sono riportati alcuni esempi.

  1. L'utente rifiuta la richiesta OAuth.
  2. Per una richiesta OAuth con il parametro prompt=none, l'utente non è già autenticato e non ha preconfigurato il consenso per gli scopi richiesti.

L'esempio seguente mostra come gestire le risposte OAuth di successo ed errore.

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

Errori non OAuth

OAuth non definisce i comportamenti quando:

  1. la finestra popup non si apre.
  2. la finestra popup viene chiusa prima che venga restituita una risposta OAuth.

Questa libreria acquisisce questi errori e attiva l'istruzione se error_callback. Assicurati di controllare il tipo di errore come mostrato di seguito. In caso contrario, la logica del codice potrebbe essere interessata quando questa libreria supporterà nuovi tipi di errori in un secondo momento.

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