Autenticación
Cómo funciona la autenticación OAuth2 automática en factus-js para conectarse a la API de facturación electrónica Factus.
La API de Factus utiliza OAuth2 para autenticar a los clientes. factus-js gestiona todo el ciclo de vida del token de forma completamente automática por lo que no necesitas llamar ningún método de autenticación manualmente.
Para más información revisa la documentación original: Introducción a la autenticación.
Configuración
Pasa las credenciales al constructor de FactusClient:
import { FactusClient } from "factus-js";
const factus = new FactusClient({
clientId: "tu-client-id",
clientSecret: "tu-client-secret",
username: "tu@email.com",
password: "tu-contraseña",
environment: "sandbox", // o "production"
});Prop
Type
URLs base
| Entorno | URL |
|---|---|
sandbox | https://api-sandbox.factus.com.co |
production | https://api.factus.com.co |
Ciclo de vida del token
El SDK gestiona el token internamente mediante la clase HttpClient. El flujo es el siguiente:
- Primera llamada: antes de la primera petición HTTP, el SDK hace un
POST /oauth/tokencongrant_type=passwordpara obtener un access token y un refresh token. - Buffer de expiración: el SDK considera el token expirado 60 segundos antes de su expiración real, para evitar errores por latencia de red.
- Renovación automática: cuando el token está próximo a expirar, el SDK hace un
POST /oauth/tokencongrant_type=refresh_tokenusando el refresh token almacenado. - Relogin como fallback: si el refresh token falla por cualquier motivo, el SDK reinicia sesión automáticamente con las credenciales originales.
Todo este proceso es transparente. Puedes hacer llamadas a la API sin preocuparte por los tokens.
Entorno sandbox
Factus ofrece un entorno de pruebas (sandbox) completamente separado del entorno de producción. Usa environment: "sandbox" durante el desarrollo para no generar documentos fiscales reales.
// Desarrollo / pruebas
const factus = new FactusClient({
// ... credenciales de sandbox
environment: "sandbox",
});
// Producción
const factus = new FactusClient({
// ... credenciales de producción
environment: "production",
});Las credenciales de sandbox y producción son distintas. Asegúrate de usar las correctas para cada entorno.
Seguridad
- Guarda siempre las credenciales en variables de entorno (
.env.local), nunca directamente en el código fuente. - Nunca expongas credenciales en el lado del cliente. factus-js está diseñado para ejecutarse en entornos de servidor (Node.js, Edge Runtime, etc.).