Skip to main content
Todas las respuestas de error siguen la misma estructura:
{
  "error": "codigo_de_error",
  "message": "Descripción legible del error"
}

Códigos de error

Causa: Falta el campo base o password en el body del request.
{
  "error": "bad_request",
  "message": "Los campos base y password son requeridos"
}
Solución: Asegúrate de enviar ambos campos en el body JSON.
Causa: El cliente no existe o la contraseña es incorrecta.
{
  "error": "invalid_credentials",
  "message": "Base o contraseña incorrectos"
}
Nota: Por seguridad, el mensaje es idéntico en ambos casos para no revelar si un cliente existe.
Causa: La ruta solicitada no existe.
{
  "error": "not_found",
  "message": "Endpoint no existe"
}
Solución: Verifica que la URL sea /login o /.well-known/jwks.json.
Causa: Se usó un método HTTP incorrecto.
{
  "error": "method_not_allowed",
  "message": "Método no permitido"
}
Solución:
  • /login solo acepta POST
  • /.well-known/jwks.json solo acepta GET
Causa: Error interno del servidor.
{
  "error": "server_error",
  "message": "Error interno"
}
Nota: Los detalles del error nunca se exponen en la respuesta por seguridad. Revisar los logs del servidor.

Manejo de errores recomendado

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$result = json_decode($response, true);

match ($httpCode) {
    200 => procesarToken($result['token']),
    400 => throw new \InvalidArgumentException($result['message']),
    401 => throw new \RuntimeException('Credenciales inválidas'),
    default => throw new \RuntimeException("Error inesperado: {$httpCode}"),
};