Перейти к основному содержимому

Liveness (биометрическое селфи)

Захват биометрического селфи со встроенной проверкой признаков живого присутствия. SDK ведёт пользователя до получения биометрически валидного кадра через SmartFrames и возвращает изображение в формате Base64 + JWT.

Возможность

Этот тип захвата использует возможность Liveness. Концептуальный обзор принципов работы Liveness см. на соответствующей странице возможностей.

Принцип работы

SDK управляет полной сессией захвата:

  1. Открывает камеру с наложением SmartFrame.
  2. Направляет пользователя для правильного позиционирования лица в рамке.
  3. Проверяет liveness — сессия завершается только при физическом присутствии пользователя.
  4. Возвращает объект с base64 (предварительный просмотр) и encrypted (JWT для API) через callback success.
Режим камеры (smart vs normal)

Web предоставляет два режима камеры через SelfieCameraTypes:

  • SelfieCameraTypes.NORMAL — стандартный режим камеры (ручной захват).
  • SelfieCameraTypes.SMART — умный режим камеры с автоматическим захватом и направляющим силуэтом.

При использовании SMART необходимо также загрузить модели компьютерного зрения через setModelsPath во время инициализации.

Запуск захвата liveness
Шаг 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

Объект 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 приводит к ошибке 73724. Аналогично, использование prepareSelfieCamera() внутри iFrame также приводит к ошибке 73724.

Полноэкранный режим на iPhone

Для выполнения захвата страница должна находиться в полноэкранном режиме, чтобы SDK мог автоматически изменять размер. Apple ограничивает использование полноэкранных API именно на iPhone (на iPad это допустимо). Для захвата на iPhone вручную настройте позиционирование iFrame.

Полное описание обработки результата см. в разделе Получение результата.