Lidar com erros

Erros podem acontecer em diferentes camadas. Você pode receber notificações de maneiras diferentes, dependendo de onde o erro acontece.

Parâmetros obrigatórios do OAuth ausentes

Se você esquecer de definir os parâmetros OAuth obrigatórios, como o client_id ou o escopo, vai aparecer uma mensagem de erro semelhante à abaixo no console JavaScript do navegador.

Erros do console JavaScript

Corrigir erros de configuração do OAuth

Talvez seja necessário fazer mudanças no console das APIs do Google para resolver alguns erros.

Valores de parâmetro OAuth inválidos

Se você definir valores inválidos para parâmetros OAuth, como o ID de cliente inválido, identificadores de escopo ou valores de tipo de resposta, a página de erro do OAuth vai aparecer.

Erros do OAuth

Respostas de erro do OAuth

O OAuth pode retornar uma resposta de erro. Nesse caso, a função callback será acionada com a resposta de erro como parâmetro. Confira abaixo um exemplo de resposta de erro do OAuth.

  {
    "error":"access_denied"
  }

Confira alguns exemplos abaixo.

  1. O usuário nega a solicitação OAuth.
  2. Para uma solicitação OAuth com o parâmetro prompt=none, o usuário não está autenticado e não tem o consentimento pré-configurado para os escopos solicitados.

O exemplo abaixo mostra como lidar com as respostas de sucesso e de erro do OAuth.

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

Erros que não são do OAuth

O OAuth não define os comportamentos quando:

  1. a janela pop-up não abre.
  2. a janela pop-up é fechada antes que uma resposta do OAuth seja retornada.

Essa biblioteca captura esses erros e aciona o error_callback, se definido. Verifique o tipo de erro, conforme abaixo. Caso contrário, a lógica do código poderá ser afetada quando essa biblioteca oferecer suporte a novos tipos de erro mais tarde.

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