Saltar al contenido principal

Autenticación

El API de Equinos utiliza Firebase Authentication con JWT tokens para autenticar las peticiones.

Obtención del Token

Para obtener un token de autenticación, debes:

  1. Autenticarte en la plataforma web de Equinos
  2. Obtener el token JWT de Firebase desde tu aplicación cliente
  3. Incluir el token en todas las peticiones al API

Obtener Token en la Web

Si estás desarrollando una aplicación web, puedes obtener el token así:

import { getAuth } from 'firebase/auth';

const auth = getAuth();
const user = auth.currentUser;

if (user) {
const token = await user.getIdToken();
console.log('Token:', token);
}

Obtener Token en Mobile (React Native)

import auth from '@react-native-firebase/auth';

const user = auth().currentUser;
const token = await user.getIdToken();

Usar el Token

Incluye el token en el header Authorization de todas las peticiones:

Authorization: Bearer YOUR_JWT_TOKEN_HERE

Ejemplo con cURL

curl -X GET "https://api.equinos.co/api/schools" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json"

Ejemplo con JavaScript/TypeScript

const response = await fetch('https://api.equinos.co/api/schools', {
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
});

const data = await response.json();

Ejemplo con PHP

$ch = curl_init('https://api.equinos.co/api/schools');

curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $token,
'Content-Type: application/json',
],
]);

$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);

Renovación del Token

Los tokens de Firebase expiran después de 1 hora. Debes renovarlos antes de que expiren:

⚠️Tokens Expirados

Si recibes un error 401 Unauthorized, tu token probablemente ha expirado. Renueva el token y vuelve a intentar.

Renovar Token Automáticamente

Firebase maneja la renovación automática del token. Sin embargo, puedes configurar un listener para detectar cuando el token cambia:

import { getAuth, onAuthStateChanged } from 'firebase/auth';

const auth = getAuth();

onAuthStateChanged(auth, async (user) => {
if (user) {
// El token se renueva automáticamente cada vez que se necesita
const token = await user.getIdToken(true); // true fuerza la renovación
}
});

Errores de Autenticación

401 Unauthorized

El token es inválido o ha expirado:

{
"error": {
"code": "UNAUTHORIZED",
"message": "Token inválido o expirado"
}
}

Solución: Renueva el token y vuelve a intentar.

403 Forbidden

No tienes permisos para realizar esta acción:

{
"error": {
"code": "FORBIDDEN",
"message": "No tienes permisos para realizar esta acción"
}
}

Solución: Verifica que tu cuenta tenga los permisos necesarios para el módulo y acción específica.

Headers Requeridos

Todas las peticiones deben incluir:

HeaderValorRequerido
AuthorizationBearer {token}✅ Sí
Content-Typeapplication/json✅ Sí (solo en POST/PUT/PATCH)
Acceptapplication/json⚠️ Recomendado

Próximos Pasos


💡Seguridad

Nunca expongas tu token JWT en código público o en el lado del cliente si no es necesario. Considera usar variables de entorno o servicios de gestión de secretos.