Los errores pueden ocurrir en diferentes capas. Es posible que recibas notificaciones de diferentes maneras, según dónde se produzca el error.
Faltan parámetros de OAuth obligatorios
Si olvidas establecer los parámetros de OAuth obligatorios, como el client_id o el permiso, verás un mensaje de error como el siguiente en la Consola de JavaScript de tu navegador.
Cómo corregir errores de configuración de OAuth
Es posible que debas realizar cambios en la Consola de APIs de Google para resolver algunos errores.
- Crea un ID de cliente si aún no lo hiciste.
- Para la UX emergente, agrega todos los dominios que puedan activar el flujo actual a
Authorized JavaScript origins
. - Para la UX de redireccionamiento, agrega todas las URLs que puedan recibir respuestas de autorización a
Authorized redirect URIs
. - Configura correctamente la pantalla de consentimiento de OAuth.
- Envía la app para verificarla si es necesario.
- Es posible que debas realizar pasos adicionales para cumplir con las políticas de OAuth 2.0 de Google.
Valores de parámetros de OAuth no válidos
Si configuras valores no válidos en los parámetros de OAuth, como el ID de cliente, los identificadores de alcance o los valores de tipo de respuesta no válidos, verás la página de error de OAuth.
Respuestas de error de OAuth
OAuth puede mostrar una respuesta de error, en cuyo caso se activará tu función callback
con la respuesta de error como parámetro. A continuación, se muestra un ejemplo de respuesta de error de OAuth.
{ "error":"access_denied" }
Estos son algunos ejemplos:
- El usuario rechaza la solicitud de OAuth.
- En el caso de una solicitud de OAuth con el parámetro
prompt=none
, el usuario aún no está autenticado y no preconfiguró el consentimiento para los permisos solicitados.
En el siguiente ejemplo, se muestra cómo controlar las respuestas correctas y de error de OAuth.
function myCallback(response) {
if (response.error) {
// Handle error response
... ...
} else if (response.code) {
// Handle success code response
... ...
}
}
Errores que no son de OAuth
OAuth no define los comportamientos en los siguientes casos:
- no se abre la ventana emergente.
- La ventana emergente se cierra antes de que se devuelva una respuesta de OAuth.
Esta biblioteca captura estos errores y activa error_callback
si está configurada. Asegúrate de verificar el tipo de error como se indica a continuación. De lo contrario, la lógica de tu código podría verse afectada cuando esta biblioteca admita nuevos tipos de errores más adelante.
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
});