Registro e inicio de sesión con Google, Apple, Microsoft y Facebook, sin contraseñas
Tus usuarios pueden registrarse e iniciar sesión con Google, Apple,
Microsoft o Facebook — sin crear ni recordar contraseñas. CBPay usa el
modelo token exchange: el botón “Continuar con…” vive en tu front, el
usuario aprueba en el proveedor, tu front recibe una credencial y te la pasa
a la API; CBPay la verifica criptográficamente y te devuelve la sesión.
El login social lo habilita tu operador (organización) y cada
organización usa sus propias apps de Google/Apple/Microsoft/Meta, así el
usuario ve TU marca en la pantalla de consentimiento. Consulta qué
proveedores están activos con GET /v1/auth/oauth/providers.
Apple entrega el nombre del usuario solo la primera vez; guárdalo en tu
front si lo necesitas. El email puede ser un alias de relay privado
(...@privaterelay.appleid.com) — es válido y estable.
Con MSAL.js:
tras loginPopup, el idToken del resultado es la credencial.
Usuario que ya existe → inicia sesión y devuelve 200 con
access_token, account_id y role (igual que el login por contraseña).El campo type (person | company, default person) solo se usa al
crear la cuenta; se ignora si ya existe.
Si la cuenta tiene OTP activo en el login
(seguridad y 2FA), el login social respeta ese segundo
paso: en vez de la sesión, POST /v1/auth/oauth devuelve
otp_required: true + pending_token, y completas con
POST /v1/auth/login/otp igual que en el login por contraseña.
Un usuario en sesión puede administrar sus métodos de acceso:
# Ver proveedores vinculadoscurl https://api.qbank.cl/platform/v1/me/identities \ -H "Authorization: Bearer <token>"# Vincular otro proveedor (con una credencial fresca de ese proveedor)curl -X POST https://api.qbank.cl/platform/v1/me/identities \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "provider": "apple", "credential": "eyJhbGci…" }'# Desvincularcurl -X DELETE https://api.qbank.cl/platform/v1/me/identities/apple \ -H "Authorization: Bearer <token>"
No puedes desvincular tu único método de acceso: si la cuenta no tiene
contraseña y ese proveedor es el único vinculado, la API responde
409 last_login_method (primero define una contraseña o vincula otro
proveedor).
No. El flujo de consentimiento ocurre en tu front con el SDK del
proveedor; a CBPay solo le mandas la credencial resultante. No hay
páginas de callback ni estado en el servidor.
¿Un usuario puede tener contraseña Y login social?
Sí. Puede registrarse con email/contraseña y luego vincular Google, o
al revés. Todos los métodos apuntan a la misma cuenta mientras el email
coincida y esté verificado.
¿Qué pasa si el proveedor no entrega email verificado?
No se vincula automáticamente por email (evita que alguien reclame el
email de otro). Se crea una cuenta independiente ligada a esa identidad;
el usuario puede añadir email/contraseña después.
¿La credencial del proveedor sirve como token de CBPay?
No. La credencial del proveedor solo se usa una vez para verificarte;
todas las llamadas siguientes usan el access_token de CBPay.