Empezar
Ver como MarkdownInstalación
Los paquetes de JavaScript y de Python, y qué necesitas configurar antes de la primera llamada.
JavaScript
El paquete base es @andco/sdk. Trae el cliente, OAuth, el almacenamiento de sesión y el cliente REST, y funciona en cualquier runtime con fetch: navegador, Node, Bun, Deno, Expo, Tauri.
npm install @andco/sdkpnpm add @andco/sdkyarn add @andco/sdkbun add @andco/sdkSi usas un framework, agrega su paquete de enlace. Cada uno depende de @andco/sdk y no duplica nada de él.
| Framework | Paquete |
|---|---|
| React, Next.js | @andco/sdk-react |
| Vue | @andco/sdk-vue |
| Svelte | @andco/sdk-svelte |
Sin build, con <script> |
@andco/sdk-script |
| Expo, React Native | @andco/sdk-react-native-webview |
npm install @andco/sdk @andco/sdk-reactpnpm add @andco/sdk @andco/sdk-reactyarn add @andco/sdk @andco/sdk-reactbun add @andco/sdk @andco/sdk-reactEn el servidor puede que además quieras la integración con tu capa de autenticación: @andco/better-auth para Better Auth y @andco/passport para Passport.
Python
uv add andco-sdkpip install andco-sdkpoetry add andco-sdkEl SDK de Python es solo de backend: cliente confidencial, sin navegador y sin presentaciones. Requiere Python 3.11 o superior.
Lo que necesitas de Andco
Para cualquier integración hacen falta dos valores, que obtienes al registrar tu aplicación:
clientId: identifica públicamente a tu aplicación. Viaja en la URL de autorización y no es un secreto.redirectTo: la URL exacta a la que Andco devuelve al usuario. Debe estar registrada tal cual, incluido el esquema y el puerto.
Una integración de servidor necesita además un clientSecret, que nunca debe llegar al navegador. Si estás construyendo una aplicación de navegador, no tienes ni necesitas un secreto: el flujo usa PKCE justamente para eso.
Variables de entorno
El SDK no lee variables de entorno por su cuenta: las recibe como argumentos. Eso deja la decisión de dónde viven en tu aplicación, que es donde corresponde.
NEXT_PUBLIC_ANDCO_CLIENT_ID=tu-client-id
ANDCO_CLIENT_SECRET=tu-client-secretLa convención de prefijos es la de tu framework. Lo único que importa es que el secreto no esté entre las variables que el framework expone al navegador.
Comprobar que quedó
import { createAndcoInstanceForServer } from "@andco/sdk/server";
const andco = createAndcoInstanceForServer({
clientId: process.env.ANDCO_CLIENT_ID!,
clientSecret: process.env.ANDCO_CLIENT_SECRET!,
});
const configuration = await andco.oauth.configuration();
console.log(configuration.serverMetadata().issuer);Si eso imprime el emisor, tu configuración llega al servidor de autorización y el resto de la documentación te va a funcionar. Si falla, el error dice qué URL no respondió.
