概述
UniLink iframe(无需后端)
最快的入门方式,只需复制并粘贴您的 UniLink URL。所需条件
- 一个 Didit 工作流(在 Didit 控制台 中创建)
- 您的 UniLink URL(在工作流中点击 复制链接)
实现
⚠️ 必填:活体检测期间访问摄像头必须设置 allow 属性。
主要优势
- 不到 1 分钟即可完成设置,无需后端,无需 API 密钥
- 零配置,回调 URL 在工作流设置中配置
- 适合 MVP,可立即开始
API 会话 iframe(需要后端)
适用于需要按会话进行自定义的高级集成。适用场景
- 为每次会话传入自定义
vendor_data或metadata - 为每次会话设置不同的回调 URL
- 在验证开始前在服务端跟踪会话
- 将会话与您的用户 ID 关联
实现
步骤 1:创建会话(后端) 会话创建响应使用名为url 的字段,请将其用作 iframe 的 src。
监听事件(postMessage)
验证页面会向父窗口发送事件。每条消息都具有以下结构: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 会自动为您设置展示方式。如果没有展示参数,页面将使用独立布局,并且不会发送布局消息。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 自动支持跨设备验证:- 用户在桌面端开始验证
- 如果摄像头不可用,会显示二维码
- 用户使用手机扫描二维码
- 用户在手机上完成验证
- 桌面端 iframe 自动更新结果
故障排除
摄像头无法工作
iframe 无法加载
- 检查是否存在内容安全策略(CSP)问题
- 将
https://verify.didit.me添加到您的frame-src指令中 - 检查浏览器控制台中的错误
未收到 postMessage
- 确认您监听的来源正确(
https://verify.didit.me,或您的白标域名) - 确保在打开 iframe 之前已添加事件监听器
- 检查事件名称和数据结构:类型带有前缀(使用
didit:completed,而不是verification_complete),payload 嵌套在event.data.data下
示例仓库
GitHub 仓库
在 GitHub 上查看源代码和示例