Skip to content

Respuesta de Autenticación

Después de que el usuario realice el login con sus credenciales, será redirigido a la URI informada en la solicitud. Los casos de falla también serán redirigidos a la dirección informada. En ambos casos, información adicional será enviada vía query string.

Caso de Éxito

En caso de éxito, el usuario será redirigido a la URI informada, con el código de autorización (Authorization Code) informado en formato de query string:

https://ejemplo.com.br/callback?code=50b98752-ac5e-4bf3-a59b-7456f9f58685

Si incluyó el parámetro state en la solicitud, será retornado:

https://ejemplo.com.br/callback?code=50b98752-ac5e-4bf3-a59b-7456f9f58685&state=af0ifjsldkj

En caso de éxito, el flujo debe continuar a la etapa de intercambio de token, donde el Authorization Code recibido deberá ser informado en la comunicación en back-channel (servidor para servidor), para fines de seguridad.

Caso de Falla

En caso de falla, el usuario será redirigido a la URI informada, con los parámetros sobre el error ocurrido informados en formato de query string:

https://ejemplo.com.br/callback?error=unauthorized_client&error_description=The Client ID informed by the client is not valid.&error_uri=https://faq.xxxid.com.br/erro

Parámetros de Error

ParámetroDescripción
errorCódigo del error
error_descriptionDescripción detallada del error
error_uriURI con más información sobre el error

Posibles Errores

  • unauthorized_client: El Client ID informado no es válido
  • invalid_request: La URI informada no corresponde a ninguna de las URIs registradas del Cliente
  • invalid_request: El uso de la propiedad id_token_hint requiere que el valor de prompt sea definido como 'none'

Validación del State

Si incluyó el parámetro state en la solicitud, siempre valide si el valor retornado corresponde al valor enviado. Esto ayuda a prevenir ataques CSRF.

Ejemplo de Implementación

javascript
const urlParams = new URLSearchParams(window.location.search);
const code = urlParams.get('code');
const error = urlParams.get('error');
const state = urlParams.get('state');

if (error) {
  console.error('Error en la autenticación:', error);
  const errorDescription = urlParams.get('error_description');
  console.error('Descripción:', errorDescription);
} else if (code) {
  if (state && state !== sessionStorage.getItem('oauth_state')) {
    console.error('State no corresponde - posible ataque CSRF');
    return;
  }
  intercambiarCodigoPorToken(code);
}

Próximo Paso

Después de recibir el código de autorización, continúe a Endpoint de Tokens.

Documentación de la API Fanbase