Autenticación
Actualizado 2026-09-16
La API es por persona: tu aplicación actúa en nombre de alguien que le dio permiso. El mecanismo es OAuth2 (authorization_code con PKCE), el mismo que usa la app móvil de Ghosty.
Endpoints
Scopes
Pides los que necesitas separados por espacio. El servidor los acota al techo de tu cliente sin fallar: si pides files y tu cliente no lo tiene, el token sale sin él. Los scopes quedan congelados en el token; un permiso nuevo llega hasta el siguiente login.
Flujo
- Genera
code_verifier(43–128 caracteres) ycode_challenge = BASE64URL(SHA256(code_verifier)). Sólo se aceptaS256. - Abre en el navegador:
- La persona entra (Google, Apple o correo) y acepta. Vuelve a tu
redirect_uricon?code=…&state=…. El código vale 60 segundos. - Canjéalo:
- Usa el token:
Refrescar
El access token dura 1 hora; el refresh token, 90 días, y rota en cada uso: guarda el nuevo y descarta el viejo. Reusar un refresh token ya rotado revoca la familia entera (es la señal de un robo).
Regla práctica: 401 → refresca y reintenta una vez; 403 → falta un scope, no reintentes.
Clientes confidenciales y públicos
- Público (móvil, SPA): sólo
client_id; PKCE obligatorio. - Confidencial (backend): además
client_secret, porclient_secret_postoAuthorization: Basic.
redirect_uri se compara exacto: sin comodines ni subrutas.
Errores
Obtener un client_id
El alta de clientes es manual mientras la API está en beta: escribe a con el nombre de tu app, los redirect_uri exactos y los scopes que necesitas. Los de la casa (Teams, la app móvil) saltan la pantalla de consentimiento; un tercero siempre la ve.