Referencia
Ver como MarkdownScopes
Los permisos que se pueden pedir y qué habilita cada uno.
Un Scope es un permiso concreto. Los pides al autorizar y recibes exactamente los que la persona aprobó, que pueden ser menos de los que pediste.
await andco.auth.signIn({ scopes: ["openid", "email", "bank_accounts:read"] });
// Lo aprobado, no lo pedido.
session.scopes;Identidad
| Scope | Qué habilita |
|---|---|
openid |
identificar a la persona con OpenID Connect |
email |
su correo electrónico |
profile |
su nombre y su avatar |
profile:write |
actualizar esos datos de perfil |
phone |
su teléfono |
identities:read |
sus identidades y documentos |
addresses:read |
sus direcciones |
addresses:write |
crear o modificar direcciones |
Organizaciones
| Scope | Qué habilita |
|---|---|
organizations:list |
listar las empresas de las que forma parte |
Banca
| Scope | Qué habilita |
|---|---|
bank_accounts:read |
leer sus cuentas bancarias |
bank_accounts.movements:read |
leer los movimientos de esas cuentas |
Sesión
| Scope | Qué habilita |
|---|---|
offline_access |
recibir un refresh token y seguir actuando cuando la persona no está presente |
Sin offline_access la sesión dura lo que dure el access token. Pídelo solo si de verdad necesitas actuar sin la persona delante.
Pedir de más no es gratis
Cada scope que agregas aparece en la pantalla de consentimiento, y algunos exigen que la persona complete verificaciones —teléfono, identidad— antes de poder aprobarlos. Pedir bank_accounts:read al inicio de sesión convierte un ingreso de dos clics en un trámite.
Pide lo mínimo para empezar y amplía cuando la persona llegue a la parte que lo necesita:
if (!session.scopes.includes("bank_accounts:read")) {
await andco.auth.signIn({ scopes: [...session.scopes, "bank_accounts:read"] });
}Scopes que no están en la lista
El tipo AndCoScope acepta cualquier cadena: los conocidos se sugieren en el editor, y uno nuevo sigue siendo válido sin esperar una versión del SDK.
Cuando falta uno
Un 403 cuyo details trae required_scope te dice exactamente cuál faltaba:
const missing = error.details?.["required_scope"];
if (missing) await andco.auth.signIn({ scopes: [...session.scopes, String(missing)] });