El secreto vive en tu servidor
- El secreto (
crq_cs_…) va solo en el código que corre en tu servidor: en el gestor de secretos de tu plataforma o en una variable de entorno. Nunca en una página web, en una app de teléfono, en una extensión de navegador ni en un repositorio, aunque sea privado. - Una app de teléfono o una web sin servidor no pueden guardar un secreto: cualquiera que la descargue lo lee. Si tu producto es una de esas, el flujo pasa por tu servidor, y el teléfono o la web hablan con tu servidor, nunca con Craqui directamente.
/oauth/tokeny/oauth/revokerechazan los pedidos que vienen de un navegador, y la API también.
Cambia el secreto sin cortar el servicio
Una app puede tener dos secretos activos a la vez. Para cambiar el secreto:- En la app, Credenciales → Nuevo secreto. Cópialo: se muestra una sola vez.
- Pon el secreto nuevo en tu servidor y despliega.
- Confirma que tu servidor ya usa el nuevo: en Credenciales, el «Último uso» del secreto viejo deja de avanzar.
- Revoca el viejo. Deja de funcionar en el acto, en el pedido siguiente.
Cuida los tokens
- Guarda los refresh tokens cifrados en tu base de datos, cada uno junto a su
business_id. Son la conexión con cada negocio: no tienen copia. - Los access tokens duran una hora. Guárdalos en memoria o cifrados, nunca en el navegador de tu usuario.
- No escribas tokens, secretos ni códigos en logs, en mensajes de error ni en tu herramienta de monitoreo. Si necesitas identificar uno, usa sus últimos cuatro caracteres.
- El token va solo en el header
Authorization. En la URL termina en los logs de cualquier proxy del camino, y la API lo rechaza (invalid_request). - Renueva el refresh token de cada negocio desde un solo proceso a la vez. Dos renovaciones en paralelo con el mismo refresh token se ven como un robo y desconectan el negocio. Lee Tokens.
El flujo de conexión
- PKCE, siempre. Un
code_verifiernuevo por cada intento, guardado en la sesión de servidor de esa persona. Sin elcode_verifier, un código robado no sirve. state, siempre. Un valor nuevo por intento, que compruebas al volver. Evita que alguien le haga conectar a tu usuario el negocio de otra persona.- Comprueba
iss. Tiene que serhttps://api.craqui.com. - Direcciones de retorno exactas y tuyas. Solo
https://, en tu dominio. Quita las de prueba que ya no uses: cada dirección registrada es un lugar al que puede llegar un código. - Tu página de retorno no filtra el código. Cambia el código por tokens enseguida y redirige a otra página
de tu web, sin el código en la URL. No cargues en la página de retorno scripts ni imágenes de terceros, y
usa
Referrer-Policy: no-referrerosame-origin.
Si algo se expone
Si ves algo raro en la Actividad de tu app, o un negocio te dice que su conexión aparece desconectada por
seguridad, escríbenos a soporte.

