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.
Corrigir erros de configuração OAuth
Alterações no Console de APIs do Google podem ser necessárias para resolver alguns erros.
- Cria um ID de cliente, caso ainda não seja.
- Para UX pop-up, adicione a
Authorized JavaScript origins
todos os domínios que podem acionar o fluxo atual. - Para UX de redirecionamento, adicione a
Authorized redirect URIs
todos os URLs que podem receber respostas de autorização. - Configure corretamente a tela de permissão OAuth.
- Envie seu app para verificação, se necessário.
- Talvez seja necessário tomar outras medidas para obedecer às políticas do OAuth 2.0 do Google.
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.
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.
- O usuário nega a solicitação do OAuth.
- 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:
- a janela pop-up não abrir.
- 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
});