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:
- Autenticarte en la plataforma web de Equinos
- Obtener el token JWT de Firebase desde tu aplicación cliente
- 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:
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:
| Header | Valor | Requerido |
|---|---|---|
Authorization | Bearer {token} | ✅ Sí |
Content-Type | application/json | ✅ Sí (solo en POST/PUT/PATCH) |
Accept | application/json | ⚠️ Recomendado |
Próximos Pasos
- 👉 Módulo Escuelas - Documentación de endpoints del módulo Escuelas
- 👉 Ver códigos de error - Lista completa de códigos de estado HTTP
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.