Как интегрировать серверную проверку Liveness в ваше мобильное приложение

Из этой статьи вы узнаете, как интегрировать Oz Liveness Mobile SDK в клиентское мобильное приложение: для съемки видео с лицом и дальнейшей его проверки на сервере.

Oz Liveness Mobile SDK – это:

  • Готовый интерфейс для съемки видео, который легко встроить в приложение клиента.

  • Высокое качество видео, которое обеспечивает точность проверки Liveness.

«Под капотом» Oz SDK взаимодействует с OZ API.

Для интеграции необходимо связаться с нами для получения всех нужных ссылок и доступов:

Логин: ivan.ivanov@yourcompany.com

Пароль: …

API: https://sandbox.ohio.ozforensics.com

Web-консоль: https://sandbox.ohio.ozforensics.com

Для работы Oz Liveness Mobile SDK нужна лицензия, которая привязывается к bundle_id приложения, например com.yourcompany.yourapp. Тестовую лицензию на месяц вы можете оформить самостоятельно на нашем веб-сайте, если вам требуется лицензия на более длительный срок – свяжитесь с нами.

Мы также рекомендуем использовать наш сервис логирования – телеметрию. Записи телеметрии помогают в расследовании деталей атак. Для пользователей Oz API логирование подключается автоматически. Для локальных установок мы предоставим вам необходимые учетные данные.

Android

1. Добавьте SDK в проект

В build.gradle проекта добавьте строки:

allprojects {
    repositories {
        maven { url "https://ozforensics.jfrog.io/artifactory/main" }
    }
}

В build.gradle модуля добавьте строки:

dependencies {
    implementation 'com.ozforensics.liveness:full:<version>'
    // номер версии можно найти в журнале изменений для Android
}

2. Инициализируйте SDK

Переименуйте файл лицензии в forensics.license и поместите его в папку res/raw в вашем проекте.

OzLivenessSDK.init(
    context,
    listOf(LicenseSource.LicenseAssetId(R.raw.forensics))
)

3. Подключите SDK к Oz API

Вам потребуются полученные от нас логин, пароль и адрес API-сервера.

OzLivenessSDK.setApiConnection(
    OzConnection.fromCredentials(host, username, password),
    statusListener(
        { token -> /* token */ },
        { ex -> /* error */ }
    )
)

На стадии продакшна рекомендуется использовать в коде не логин и пароль, а полученный с помощью метода авторизации на их основе токен доступа access_token. Передайте токен в приложение:

OzLivenessSDK.setApiConnection(OzConnection.fromServiceToken(host, token))

4. Add face recording

Для начала съемки используйте метод startActivityForResult:

val OZ_LIVENESS_REQUEST_CODE = 1
val intent = OzLivenessSDK.createStartIntent(listOf( OzAction.Blank)) startActivityForResult(intent, OZ_LIVENESS_REQUEST_CODE)

Для получения готового видео используйте onActivityResult:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == OZ_LIVENESS_REQUEST_CODE) {
            val sdkMediaResult = OzLivenessSDK.getResultFromIntent(data)
            val sdkErrorString = OzLivenessSDK.getErrorFromIntent(data)
            if (!sdkMediaResult.isNullOrEmpty()) {
                analyzeMedia(sdkMediaResult)
            } else println(sdkErrorString)
        }
    }

Готовые видео содержатся в объекте sdkMediaResult.

5. Запустите анализы

Для запуска анализов используйте код ниже. mediaList – массив объектов, полученных из sdkMediaResult или извне (если вы снимали видео без использования нашего SDK).

private fun analyzeMedia(mediaList: List<OzAbstractMedia>) {
    AnalysisRequest.Builder()
        .addAnalysis(Analysis(Analysis.Type.QUALITY, Analysis.Mode.SERVER_BASED, mediaList))
        .build()
        .run(object : AnalysisRequest.AnalysisListener {
            override fun onSuccess(result: List<OzAnalysisResult>) {
                result.forEach { 
                    println(it.resolution.name)
                    println(it.folderId)
                }
            }
            override fun onError(error: OzException) {
                error.printStackTrace()
            }
        })
} 

iOS

1. Добавьте SDK в проект

Установите OZLivenessSDK через CocoaPods. Чтобы встроить SDK в проект Xcode, в Podfile добавьте:

pod 'OZLivenessSDK', :git => 'https://gitlab.com/oz-forensics/oz-liveness-ios', :tag => '<version>' // You can find the version needed in  iOS changelog

2. Инициализируйте SDK

Переименуйте файл лицензии в forensics.license и поместите его в проект.

OZSDK(licenseSources: [.licenseFileName("forensics.license")]) { licenseData, error in
    if let error = error {
        print(error.errorDescription)
    }
}

3. Подключите SDK к Oz API

Вам потребуются полученные от нас логин, пароль и адрес API-сервера.

OZSDK.setApiConnection(Connection.fromCredentials(host: “https://sandbox.ohio.ozforensics.com”, login: login, password: p)) { (token, error) in
    // Your code to handle error or token
}

На стадии продакшна рекомендуется использовать в коде не логин и пароль, а полученный с помощью метода авторизации на их основе токен доступа access_token. Передайте токен в приложение:

OZSDK.setApiConnection(Connection.fromServiceToken(host: "https://api.sandbox.ozforensics.com", token: token)) { (token, error) in
}

4. Запустите съемку видео

Создайте контроллер, который будет снимать видео:

let actions: [OZVerificationMovement] = [.selfie]
let ozLivenessVC: UIViewController = OZSDK.createVerificationVCWithDelegate(delegate, actions: actions) 
self.present(ozLivenessVC, animated: true)

В делегате используйте протокол OZLivenessDelegate:

let actions: [OZVerificationMovement] = [.selfie]
let ozLivenessVC: UIViewController = OZSDK.createVerificationVCWithDelegate(delegate, actions: actions) 
self.present(ozLivenessVC, animated: true)

5. Запустите анализы

Для запуска анализов используйте AnalysisRequestBuilder. Метод run «под капотом» обратится к Oz API.

let analysisRequest = AnalysisRequestBuilder()
let analysis = Analysis.init(
media: mediaToAnalyze, 
type: .quality, 
mode: .serverBased)
analysisRequest.uploadMedia(mediaToAnalyze)
analysisRequest.addAnalysis(analysis)
analysisRequest.run(
scenarioStateHandler: { state in }, // обработчик шагов сценария
uploadProgressHandler: { (progress) in } // обработчик для загрузки файлов 
) { (analysisResults : [OzAnalysisResult], error) in 
    // получение и обработка анализов 
    for result in analysisResults {
        print(result.resolution)
        print(result.folderID)
    }
}

Шаги выше помогут вам в базовой интеграции наших мобильных SDK в ваше приложение. Чтобы получить доступ к снятым видео и результатам анализов, воспользуйтесь веб-консолью или API-запросами.

В руководстве разработчика вы также найдете инструкции по настройке внешнего вида SDK и список методов SDK как для iOS, так и для Android:

Last updated