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.
Corrigir erros de configuração do OAuth
Talvez seja necessário fazer mudanças no console das APIs do Google para resolver alguns erros.
- Cria um ID do cliente, se ainda não tiver sido feito.
- Para a UX de pop-up, adicione todos os domínios que podem acionar o fluxo atual a
Authorized JavaScript origins
. - Para a UX de redirecionamento, adicione todos os URLs que podem receber respostas de autorização a
Authorized redirect URIs
. - Configure sua tela de consentimento OAuth corretamente.
- Envie seu app para verificação, se necessário.
- Talvez seja necessário seguir outras etapas para estar em conformidade com as políticas do OAuth 2.0 do Google.
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.
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.
- O usuário nega a solicitação OAuth.
- 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:
- a janela pop-up não abre.
- 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
});