Guía: identificar a usuarios con sesión iniciada
Permite que el navegador, la app o el centro de preferencias alojado actúen por una persona identificada — de forma segura — con tokens de identidad.
Una clave publicable (pk_) vive en tu página o app, así que cualquiera puede copiarla. Por sí sola solo alcanza a visitantes anónimos — el id de dispositivo que generan el CMP y los SDKs. Para leer o escribir a una persona identificada (email:, external_id:, phone:, custom:) desde el navegador o una app, la petición lleva además un token de identidad: una declaración firmada y de corta duración de tu backend que dice "este visitante es external_id:u_42".
403 identity_token_required. Los ids de dispositivo anónimos siguen funcionando igual, y las claves secretas (sk_) no se ven afectadas.1. Crea un secreto de identidad
Consola → Integrate → Identity tokens → Create identity secret (solo administradores). Copia el secreto isec_… y su id (kid) en la configuración de tu servidor, como una clave sk_. Puedes tener dos secretos activos a la vez para rotar sin cortes; revocar uno invalida al instante todos los tokens firmados con él.
2. Firma un token en tu servidor tras el login
import { signIdentityToken } from '@tripticonsent/sdk/server';
const identityToken = await signIdentityToken({
secret: process.env.TC_IDENTITY_SECRET, // isec_…
secretId: process.env.TC_IDENTITY_KID,
siteId: process.env.TC_SITE_ID,
subject: `external_id:${user.id}`, // mejor un id estable que un email
// ttlSeconds: 3600 (por defecto), máximo 24 h
});¿No usas Node? Es un JWT HS256 estándar: cabecera { "alg": "HS256", "typ": "JWT", "kid": "<id del secreto>" }, payload { "sub": "external_id:u_42", "site": "<id del sitio>", "aud": "tripticonsent:identity", "iat": <ahora>, "exp": <ahora + ≤ 86400> }, firmado con el secreto. Sirve cualquier librería JWT.
3. Pásalo
- Banner de cookies (CMP):
cmp.identify('external_id:u_42', identityToken)justo después del login, odata-tc-subject+data-tc-identity-tokenen la etiqueta script de una página renderizada en servidor. Al cerrar sesión:cmp.identify(cmp.getDeviceId()). - SDK de JavaScript:
new TripticonsentClient({ apiKey: 'pk_live_…', identityToken })otc.setIdentityToken(token). - iOS / Android / Flutter: la opción
identityTokenosetIdentityToken(…). La clave de la app debe tener activado Allow native apps — las apps no envían cabeceraOrigin. - API directa: envíalo en la cabecera
X-Tc-Identity. - Plugin de WordPress: sin código — Ajustes → Tripticonsent → Logged-in visitors. El plugin firma el token en el servidor y el banner lo obtiene de un endpoint sin caché, así que las páginas cacheadas nunca llevan el token de nadie. Otros CMS pueden hacer lo mismo con
data-tc-identity-endpointdel CMP (una URL del mismo origen que devuelve{ subject, identityToken, expiresIn }, o204sin sesión).
Enlaces al centro de preferencias por correo
El centro de preferencias alojado recibe el token en el enlace, así que solo el destinatario puede abrirlo: firma con use: 'prefs' (hasta 30 días) y enlaza a https://tripticonsent.tripticode.com/es/prefs?pk=<pk_…>&it=<token>. Un enlace caducado o manipulado muestra una página de "enlace caducado".
const it = await signIdentityToken({ ...config, subject: `external_id:${user.id}`, use: 'prefs', ttlSeconds: 14 * 86400 });sub — no alcanza a nadie más y está ligado a tu sitio.