Lidar com erros

Os erros podem ocorrer em diferentes camadas. Você pode receber notificações de diferentes maneiras, dependendo de onde o erro ocorre.

Parâmetros obrigatórios do OAuth

Se você esquecer de definir os parâmetros OAuth obrigatórios, como client_id ou scope, uma mensagem de erro vai aparecer 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 de APIs do Google para resolver alguns erros.

Valores de parâmetro OAuth inválidos

Se você definir valores inválidos para parâmetros do OAuth, como ID do cliente, identificadores de escopo ou valores de tipo de resposta inválidos, 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, sua função callback será acionada com a resposta de erro como parâmetro. Confira um exemplo de resposta de erro do OAuth.

  {
    "error":"access_denied"
  }

Por exemplo:

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

Este exemplo mostra como processar as respostas de sucesso e erro do OAuth:

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

Erros não relacionados ao 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. Caso contrário, a lógica do código poderá ser afetada quando essa biblioteca oferecer suporte a novos tipos de erros 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
});