Liveness (биометрическое селфи)
Захват биометрического селфи со встроенной проверкой признаков живого присутствия. SDK ведёт пользователя до получения биометрически валидного кадра через SmartFrames и возвращает изображение в формате Base64 + JWT.
Этот тип захвата использует возможность Liveness. Концептуальный обзор принципов работы Liveness см. на соответствующей странице возможностей.
SDK управляет полной сессией захвата:
- Открывает камеру с наложением SmartFrame.
- Направляет пользователя для правильного позиционирования лица в рамке.
- Проверяет liveness — сессия завершается только при физическом присутствии пользователя.
- Возвращает объект с
base64(предварительный просмотр) иencrypted(JWT для API) через callbacksuccess.
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 поддерживает встроенный Interactive Liveness в iFrame через prepareSelfieCameraForIFrame():
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 — вызов вне iFrame приведёт к сбою сеанса. Аналогично, использование prepareSelfieCamera() внутри iFrame также приводит к ошибке 73406.
Для выполнения захвата страница должна находиться в полноэкранном режиме, чтобы SDK мог автоматически изменять размер. Apple ограничивает использование полноэкранных API именно на iPhone (на iPad это допустимо). Для захвата на iPhone вручную настройте позиционирование iFrame.
В контексте iFrame могут срабатывать два кода ошибки: 73406 срабатывает, когда инициализация камеры заблокирована из-за вызова prepareSelfieCamera() внутри iFrame — используйте вместо этого prepareSelfieCameraForIFrame(); 73724 срабатывает, когда активная сессия отменяется, так как сессия камеры была запущена внутри iFrame. Полный каталог см. в разделе Обработка ошибок.
Полное описание обработки результата см. в разделе Получение результата.