Saltar al contenido principal
Integra el flujo de verificación de Didit directamente en tu aplicación mediante un iframe. Así ofreces una experiencia fluida sin redirigir a los usuarios fuera de tu sitio.

Visión general


La forma más rápida de empezar: solo copia y pega tu URL de UniLink.

Qué necesitas

  1. Un flujo de verificación (workflow) de Didit (creado en la Didit Console)
  2. Tu URL de UniLink (haz clic en Copy Link en tu flujo)

Implementación

⚠️ Obligatorio: el atributo allow es imprescindible para acceder a la cámara durante la detección de vida.

Ventajas principales

  • Configuración en menos de 1 minuto: sin backend y sin claves de API
  • Cero configuración: la URL de callback se define en la configuración del flujo
  • Ideal para MVP: empieza de inmediato

Iframe con sesión por API (con backend)

Para integraciones avanzadas que necesitan personalización por sesión.

Cuándo usarlo

  • Enviar vendor_data o metadata personalizados por sesión
  • Definir URL de callback distintas por sesión
  • Hacer seguimiento de las sesiones desde el servidor antes de que empiece la verificación
  • Asociar las sesiones con los ID de tus usuarios

Implementación

Paso 1: Crear una sesión (backend) La respuesta de creación de sesión incluye un campo llamado url: úsalo como src del iframe.
Paso 2: Insertar en un iframe (frontend)

Escuchar eventos (postMessage)

La página de verificación envía eventos a la ventana que la contiene. Todos los mensajes tienen esta estructura:
El payload está anidado: lee event.data.data.sessionId, no event.data.sessionId:
Eventos principales: didit:ready ({ sessionId }), didit:started, didit:step_started / didit:step_completed / didit:step_changed ({ step, ... }), didit:status_updated ({ status }), didit:completed ({ sessionId, status }), didit:cancelled, didit:error ({ error, step? }), didit:close_request y didit:layout ({ contentHeight, colorScheme, dir }, consulta más abajo). La referencia de eventos del SDK de JavaScript enumera los eventos de verificación disponibles como callbacks tipados. A partir de la versión 0.5.0, el SDK gestiona los mensajes de layout internamente en lugar de reenviarlos a onEvent.

Dimensionar el iframe con didit:layout

La página de verificación te indica cuánto espacio necesita mediante un mensaje didit:layout. Envía uno al cargarse y otro cada vez que cambian la altura de su contenido, el tema o la dirección del texto:
Para recibir didit:layout en tu propio iframe, añade sdk_presentation=embedded a su URL de verificación. A partir de la versión 0.5.0, el SDK de JavaScript configura la presentación por ti. Sin un parámetro de presentación, la página usa su layout independiente y no envía mensajes de layout.
Este host sigue los tamaños recomendados: una tarjeta fija a partir de 1024px de ancho, pantalla completa a 540px o menos y, entre ambos, un iframe de 500px de ancho que adopta la altura que indica la página:
Entre 541px y 1023px, este ejemplo usa una altura inicial de 700px hasta que llega un mensaje de layout, con un máximo del 90% de la altura visible de la ventana. Los tamaños para computadoras y teléfonos se aplican de inmediato. En teléfonos, el iframe cubre la ventana, así que ofrece en tu host una forma de salir de la verificación. Usa colorScheme y dir para que los controles que dibujes alrededor del iframe coincidan con el tema y la dirección del texto de la página. Si la conexión del usuario se cae, la página muestra una pantalla “No internet connection” que se cierra sola cuando se recupera la conexión. Si el usuario elige Exit Verification en ella, la página envía didit:error con error: "network_error" y después didit:cancelled: cierra el iframe al recibir didit:cancelled.

Implementación en modal

Para una experiencia pulida con el modal que se superpone a tu página:

HTML/CSS/JS


Componente de React

Un componente de React reutilizable para la verificación en un modal:

Uso


Componente de Vue


Configuración

Permisos necesarios

Usa esta lista completa de permisos para la captura, la ubicación, la copia y la compatibilidad multimedia:
El atributo allow delega permisos; no anula la elección del usuario ni un encabezado Permissions-Policy más restrictivo en tu página anfitriona.

Tamaño del iframe

El flujo de verificación adapta su diseño al tamaño de su iframe. Dimensiona el iframe según la ventana en la que se muestra: Para el rango intermedio, empieza con 500px por 700px hasta que llegue el primer mensaje didit:layout, con el mismo límite de altura. El ejemplo de didit:layout aplica los tres tamaños, incluidos los de escritorio y teléfono antes de que llegue cualquier mensaje.

Content Security Policy (CSP)

Si usas CSP, añade Didit a tu directiva frame-src:

Verificación entre dispositivos

El iframe InContext admite automáticamente la verificación entre dispositivos:
  1. El usuario inicia la verificación en un equipo de escritorio
  2. Si la cámara no está disponible, se muestra un código QR
  3. El usuario escanea el código QR con un dispositivo móvil
  4. El usuario completa la verificación en un dispositivo móvil
  5. El iframe en el equipo de escritorio se actualiza automáticamente con el resultado
Esto ocurre automáticamente: no se necesita ninguna configuración adicional.

Solución de problemas

La cámara no funciona

  1. Asegúrate de que el iframe incluya la lista de permisos completa
  2. Comprueba que tu sitio se sirva por HTTPS
  3. Verifica que el usuario haya concedido permisos de cámara a tu dominio
  4. Prueba el método de redirección si falla el acceso a la cámara desde el iframe

El iframe no carga

  1. Revisa si hay problemas con la Content Security Policy (CSP)
  2. Añade https://verify.didit.me a tu directiva frame-src
  3. Revisa la consola del navegador en busca de errores

No se recibe el postMessage

  1. Verifica que estés escuchando el origen correcto (https://verify.didit.me o tu dominio de marca blanca)
  2. Comprueba que el listener de eventos se añada antes de abrir el iframe
  3. Comprueba el nombre y la estructura del evento: los tipos llevan prefijo (didit:completed, no verification_complete) y el payload está anidado en event.data.data

Repositorio de ejemplo

Repositorio de GitHub

Consulta el código fuente y los ejemplos en GitHub

Última modificación el 1 de noviembre de 2026