跳转到主要内容

活体检测(生物特征自拍)

内嵌活体验证的生物特征自拍采集。SDK 通过 SmartFrames 引导用户,直到获取生物特征有效的帧,并以 Base64 + JWT 的形式返回图像。

功能

此采集类型使用活体检测能力。有关活体检测工作原理的概念性概述,请参阅活体检测能力页面。

工作原理

SDK 管理完整的采集会话:

  1. 打开带有 SmartFrame 叠加层的摄像头。
  2. 引导用户将面部置于框内。
  3. 验证活体——只有用户实际在场时,会话才会完成。
  4. 通过 success 回调返回包含 base64(预览)和 encrypted(API 用 JWT)的对象。
摄像头模式(smart 与 normal)

Web 通过 SelfieCameraTypes 提供两种摄像头模式:

  • SelfieCameraTypes.NORMAL — 标准摄像头模式(手动采集)。
  • SelfieCameraTypes.SMART — 带有自动采集和轮廓引导的智能摄像头模式。

使用 SMART 时,还必须在初始化时通过 setModelsPath 加载计算机视觉模型。

开始活体采集
步骤 1 — 实现 callback 对象

Web SDK 使用 callback 对象(传递给 open())来处理成功和错误事件。两个处理程序均为必填项:

处理程序调用时机
on.success(obj)捕获成功完成——接收包含 base64encrypted 的对象
on.error(error)会话期间发生错误——接收 ErrorBio
const callback = {
on: {
success: (obj) => {
console.log(obj.base64);
console.log(obj.encrypted);
},
error: (error) => {
console.error(error);
}
}
};
强制回调

callback 对象是必填项。如果未正确实现(同时覆盖 successerror 事件),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

iPhone 上的全屏

执行采集时,页面必须处于全屏模式,以便 SDK 能够自动调整大小。Apple 专门限制在 iPhone 上使用全屏 API(iPad 可接受)。对于在 iPhone 上的采集,请手动配置 iFrame 的定位。

完整的结果处理说明,请参阅接收结果