跳转到主要内容
使用 iframe 将 Didit 验证流程直接嵌入您的应用中。这样可以提供无缝的体验,无需将用户重定向离开您的网站。

概述


最快的入门方式,只需复制并粘贴您的 UniLink URL。

所需条件

  1. 一个 Didit 工作流(在 Didit 控制台 中创建)
  2. 您的 UniLink URL(在工作流中点击 复制链接)

实现

⚠️ 必填:活体检测期间访问摄像头必须设置 allow 属性。

主要优势

  • 不到 1 分钟即可完成设置,无需后端,无需 API 密钥
  • 零配置,回调 URL 在工作流设置中配置
  • 适合 MVP,可立即开始

API 会话 iframe(需要后端)

适用于需要按会话进行自定义的高级集成。

适用场景

  • 为每次会话传入自定义 vendor_data 或 metadata
  • 为每次会话设置不同的回调 URL
  • 在验证开始前在服务端跟踪会话
  • 将会话与您的用户 ID 关联

实现

步骤 1:创建会话(后端) 会话创建响应使用名为 url 的字段,请将其用作 iframe 的 src。
步骤 2:在 iframe 中嵌入(前端)

监听事件(postMessage)

验证页面会向父窗口发送事件。每条消息都具有以下结构:
payload 是嵌套的,请读取 event.data.data.sessionId,而不是 event.data.sessionId:
主要事件: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,以及 didit:layout({ contentHeight, colorScheme, dir },参见下文)。JavaScript SDK 事件参考列出了可作为类型化回调使用的验证事件。从 0.5.0 版本开始,SDK 会在内部处理布局消息,而不会将其转发给 onEvent。

根据 didit:layout 设置 iframe 尺寸

验证页面会通过 didit:layout 消息告知所需的空间。页面加载时会发送一条消息,之后每当其内容高度、主题或文本方向发生变化时,都会再次发送:
要在您自己的 iframe 中接收 didit:layout,请在其验证 URL 中添加 sdk_presentation=embedded。从 0.5.0 版本开始,JavaScript SDK 会自动为您设置展示方式。如果没有展示参数,页面将使用独立布局,并且不会发送布局消息。
本宿主遵循推荐尺寸:宽度 1024px 及以上使用固定卡片,540px 及以下全屏显示,两者之间使用宽 500px 的 iframe,其高度取自页面报告的值:
在 541px 至 1023px 之间,此示例在收到布局消息前使用 700px 的初始高度,并且最高不超过可见窗口高度的 90%。电脑和手机尺寸会立即生效。在手机上 iframe 会覆盖整个窗口,因此请在宿主页面中提供退出验证的方式。请使用 colorScheme 和 dir,使您在 iframe 周围绘制的控件与页面的主题和文本方向保持一致。 如果用户的网络连接中断,页面会显示“无网络连接”屏幕,网络恢复后该屏幕会自动关闭。如果用户在此屏幕上选择退出验证,页面会先发送 didit:error(error: "network_error"),然后发送 didit:cancelled:收到 didit:cancelled 时请关闭 iframe。

模态框实现

如需在页面上叠加显示一个精致的模态框体验:

HTML/CSS/JS


React 组件

用于模态框验证的可复用 React 组件:

用法


Vue 组件


配置

所需权限

使用以下完整权限列表,以支持采集、位置、复制和媒体兼容性:
allow 属性用于委派权限;它不会覆盖用户的选择,也不会覆盖宿主页面中更严格的 Permissions-Policy 响应头。

iframe 尺寸

验证流程会根据其 iframe 的尺寸自动布局。请根据显示它的窗口来设置 iframe 尺寸: 对于中间宽度范围,在收到第一条 didit:layout 消息之前,从 500px × 700px 开始,高度上限相同。didit:layout 示例展示了全部三种尺寸,包括在收到任何消息之前的电脑和手机尺寸。

内容安全策略 (CSP)

如果您使用 CSP,请将 Didit 添加到您的 frame-src 指令中:

跨设备验证

InContext iframe 自动支持跨设备验证:
  1. 用户在桌面端开始验证
  2. 如果摄像头不可用,会显示二维码
  3. 用户使用手机扫描二维码
  4. 用户在手机上完成验证
  5. 桌面端 iframe 自动更新结果
这一过程自动完成,无需额外配置。

故障排除

摄像头无法工作

  1. 确保 iframe 包含完整的权限列表
  2. 检查您的站点是否通过 HTTPS 提供服务
  3. 确认用户已为您的域名授予摄像头权限
  4. 如果 iframe 中的摄像头访问失败,请尝试重定向方式

iframe 无法加载

  1. 检查是否存在内容安全策略(CSP)问题
  2. 将 https://verify.didit.me 添加到您的 frame-src 指令中
  3. 检查浏览器控制台中的错误

未收到 postMessage

  1. 确认您监听的来源正确(https://verify.didit.me,或您的白标域名)
  2. 确保在打开 iframe 之前已添加事件监听器
  3. 检查事件名称和数据结构:类型带有前缀(使用 didit:completed,而不是 verification_complete),payload 嵌套在 event.data.data 下

示例仓库

GitHub 仓库

在 GitHub 上查看源代码和示例

最后修改于 2026年11月7日