Tratar erros

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

Parâmetros OAuth necessários ausentes

Se você esquecer de definir os parâmetros OAuth necessários, como client_id ou o escopo, uma mensagem de erro como a abaixo será exibida no Console JavaScript do navegador.

Erros do Console JavaScript

Corrigir erros de configuração OAuth

Alterações no Console de APIs do Google podem ser necessárias para resolver alguns erros.

Valores de parâmetro OAuth inválidos

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

Erros de 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. Veja a seguir um exemplo de resposta de erro do OAuth.

  {
    "error":"access_denied"
  }

Veja alguns exemplos abaixo.

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

O exemplo abaixo mostra como lidar com 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 OAuth

O OAuth não define os comportamentos quando:

  1. a janela pop-up não abrir.
  2. a janela pop-up será fechada antes que uma resposta OAuth seja retornada.

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

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