活体检测(生物特征自拍)
内嵌活体验证的生物特征自拍采集。SDK 通过 SmartFrames 引导用户,直到获取生物特征有效的帧,并以 Base64 + JWT 的形式返回图像。
此采集类型使用活体检测能力。有关活体检测工作原理的概念性概述,请参阅活体检测能力页面。
SDK 管理完整的采集会话:
- 打开带有 SmartFrame 叠加层的摄像头。
- 引导用户将面部置于框内。
- 验证活体——只有用户实际在场时,会话才会完成。
- 通过
success回调返回包含base64(预览)和encrypted(API 用 JWT)的对象。
Web 通过 SelfieCameraTypes 提供两种摄像头模式:
SelfieCameraTypes.NORMAL— 标准摄像头模式(手动采集)。SelfieCameraTypes.SMART— 带有自动采集和轮廓引导的智能摄像头模式。
使用 SMART 时,还必须在初始化时通过 setModelsPath 加载计算机视觉模型。
步骤 1 — 实现 callback 对象
Web SDK 使用 callback 对象(传递给 open())来处理成功和错误事件。两个处理程 序均为必填项:
| 处理程序 | 调用时机 |
|---|---|
on.success(obj) | 捕获成功完成——接收包含 base64 和 encrypted 的对象 |
on.error(error) | 会话期间发生错误——接收 ErrorBio |
const callback = {
on: {
success: (obj) => {
console.log(obj.base64);
console.log(obj.encrypted);
},
error: (error) => {
console.error(error);
}
}
};
callback 对象是必填项。如果未正确实现(同时覆盖 success 和 error 事件),SDK 将抛出异常,若未处理该异常,将在用户的控制台中显示。
步骤 2 — 构建摄像头并准备自拍会话
构建摄像头实例并调用 prepareSelfieCamera,传入 UnicoConfig 和所需的 SelfieCameraTypes:
生成 encrypted 与将其提交至 API 之间的间隔不得超过 10 分钟。
const unicoCamera = unicoCameraBuilder.build();
const config = new UnicoConfig()
.setHostname("<YOUR_HOSTNAME>")
.setHostKey("<YOUR_HOST_KEY>");
unicoCamera.prepareSelfieCamera(
config,
SelfieCameraTypes.SMART
).then(cameraOpener => {
cameraOpener.open(callback);
}).catch(error => {
console.error(error);
});
为优化摄像头启动速度,可以将 prepareSelfieCamera() 和 open() 的调用分开——在用户导航至采集页面时保持准备步骤就绪。
步骤 3 — (可选)在 iFrame 中使用
Web SDK 支持通过 prepareSelfieCameraForIFrame() 在 iFrame 中嵌入交互式活体检测:
unicoCamera.prepareSelfieCameraForIFrame(
config,
SelfieCameraTypes.SMART
).then(cameraOpener => {
cameraOpener.open(callback);
}).catch(error => {
console.error(error);
});
使用所需权限实现 <iframe> 元素:
<iframe allow="fullscreen;camera;geolocation" allowFullScreen src="your_app_url"></iframe>
prepareSelfieCameraForIFrame() 只能在 iFrame 内部使用——在外部使用会导致错误 73724。同样,在 iFrame 内部使用 prepareSelfieCamera() 也会导致错误 73724。
执行采集时,页面必须处于全屏模式,以便 SDK 能够自动调整大小。Apple 专门限制在 iPhone 上使用全屏 API(iPad 可接受)。对于在 iPhone 上的采集,请手动配置 iFrame 的定位。
完整的结果处理说明,请参阅接收结果。