1. 文档说明
文档名称 | 人脸实名认证APP5.0方案集成文档 |
---|---|
所属平台 | Android |
提交日期 | 2021-12-8 |
2. 版本说明
名称 | 版本号 |
---|---|
名镜方案 | 5.0.0 |
系统支持 | android 4.4+ |
3. SDK说明
文件名称 | 版本号 | 说明 |
---|---|---|
lib-logic.aar | 1.0.0 | 名镜SDK,业务逻辑封装 |
faceplatform-ui.aar | 5.0.1 | 人脸SDK的UI层,封装采集和活体UI等功能,以及各平台so库 |
lib-liantian.aar | 3.5.9.0.1 | 安全SDK |
ocr_ui.aar | 1.1.1 | 百度OCR身份识别库 |
4. Demo运行
4.1 配置包名和签名
从百度云控制台下载Demo之后,需要在build.gradle中配置好包名和签名信息。
4.2 修改accessToken
以下两处修改为AI开放平台AK、SK获取到的access_token,正式环境需要APP服务端通过AK、SK来获取access_token,移动端测试可以链接拼接AK、SK的方式来获取access_token。【此处需要注意】 access_token存在有效期,正式环境需要APP服务端通过AK、SK来获取access_token,此处只测试使用。 (https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】)。
测试实名认证,请将获取到的access_token填在如下地方:
测试在线活体,请将获取到的access_token填在如下地方:
5. SDK集成
首先在app工程中增加lib-liantian.aar、faceplatform-ui.aar、lib-logic.aar、ocr-ui.aar。此处需要注意,如果需要使用OCR身份证识别能力,则需要增加此ocr-ui-release.aar,如果不使用则不需要增加。在app工程的build.gradle中添加相关依赖,然后点击Sync Now。
6. 授权文件、加密文件
请将百度云控制台创建应用时获取的人脸授权文件(idl-license.face-android)、加密文件(idl-key.face-android)放置于Assets目录下。如果使用OCR身份证识别功能,请将OCR身份证识别授权文件(aip.license)也放置于Assets目录下,如下图所示。
7. 人脸相关接口
7.1 初始化接口
初始化接口调用
返回值 | API | 描述 |
---|---|---|
void | init(Context context, String licenseKey, String licenseName,LogicInitCallback logicInitCallback) | 人脸初始化接口 |
入参说明
参数 | 类型 | 说明 |
---|---|---|
context | Context | 上下文 |
licenseKey | String | 授权Key |
licenseName | String | 授权文件名称 |
onCallback回调说明
参数 | 类型 | 含义 | 值 |
---|---|---|---|
resultCode | int | 错误码 | 1000为成功,其他为失败,详情参考resultCode错误码说明 |
resultMsg | String | 详情见resultCode错误码说明 |
resultCode错误码说明
resultCode | resultMsg |
---|---|
1000 | 成功 |
1001 | License未初始化 |
1002 | License数据解密失败 |
1003 | Licesen数据格式错误 |
1004 | License-Key校验错误 |
1005 | 算法ID校验错误 |
1006 | MD5校验错误 |
1007 | 设备ID校验错误 |
1008 | 包名(应用名校验错误) |
1009 | 过期时间不正确 |
1010 | 功能未授权 |
1011 | 授权已过期 |
1012 | 本地文件读取失败 |
1013 | 远程数据拉取失败 |
1014 | 本地时间校验错误 |
7.2 实名认证接口
基于姓名和身份证号,调取公安权威数据源人脸图,将当前获取的人脸图片,与公安数据源人脸图进行对比,得出比对分数,并基于此进行业务判断是否为同一人。
注:如果配置APP方案时,身份信息录入的方式选择【业务调用时传入身份信息】,那么通过APP服务端接口获取姓名和证件号后,将获取到的姓名和证件号赋值给name和idcard_number字段即可。
返回值 | API | 描述 |
---|---|---|
void | startFaceRecognize(Context context, Map params, LogicServiceCallbck logicServiceCallbck) | 实名认证接口 |
入参params (HashMap类型) key值列表如下:
参数 | 类型 | 说明 | 必选 |
---|---|---|---|
access_token | String | 需要APP服务端通过AK、SK获取,参考 https://ai.baidu.com/docs#/Auth/top | 是 |
name | String | 姓名(需要是 utf8 编码) | 是 |
id_card_number | String | 身份证件号 | 是 |
plan_id | String | 在控制台配置的方案Id | 否 |
verify_type | int | 身份证类型(默认为0)0:大陆,1:港澳,2:外国,3:定居国外的中国护照 | 否 |
quality_control | String | 质量控制参数 NONE: 不进行控制 LOW:较低的质量要求 NORMAL: 一般的质量要求 HIGH: 较高质量要求 默认为NONE | 否 |
liveness_control | String | 活体控制参数 NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认为NORMAL | 否 |
onCallback回调说明
参数 | 类型 | 含义 | 值 |
---|---|---|---|
resultCode | int | 错误码 | 0为成功,其他为失败,详情参考resultCode错误码说明 |
resultMap | HashMap | 回调结果Map | 详情见下表 |
resultMap key值列表说明:
Key值 | 类型 | 含义 |
---|---|---|
resultMsg | String | 详情见resuultCode错误码说明 |
data | String | 服务端返回结果json,只有错误码为0时会返回 此字段,具体内容可以参考实名认证(V4)接口:https://ai.baidu.com/ai-doc/FACE/Cktmsru8w |
resultCode和resultMsg说明
resultCode | resultMsg |
---|---|
0 | 成功 |
-101 | 已有采集流程运行中 |
-102 | 采集流程取消 |
-103 | 安全SDK未初始化 |
-104 | 未同意隐私协议 |
-105 | 安全模块加载失败 |
-106 | 网络异常 |
-201 | 风控验证失败 |
-301 | 云端验证异常 |
-303 | 视频录制错误 |
-304 | 线程异常 |
-305 | 线筛选图片异常 |
-306 | 采集前内部异常 |
-307 | 活体验证步骤异常 |
-308 | 预览异常 |
-309 | 采集后内部异常 |
-310 | 摄像头调起失败 |
-401 | 超时,用户取消采集流程 |
-402 | 炫彩异常 |
-403 | 活体分数异常 |
-404 | 活体分数异常 |
-1001 | 网络异常 |
-1002 | accessToken参数不合法 |
-1003 | 姓名参数不合法 |
-1004 | 证件号码参数不合法 |
-1005 | 安全模块未下载成功 |
7.3 活体检测接口
包含本地活体加云端活体,本地活体分静默活体、炫彩活体、动作活体三种,云端活体可以判断图片中的人脸是否为二次翻拍以及是否为合成图攻击。
返回值 | API | 描述 |
---|---|---|
void | startFaceLiveness(Context context, Map params, LogicServiceCallbck logicServiceCallbck) | 活体检测接口 |
入参params (HashMap类型) key值列表如下:
参数 | 类型 | 说明 | 必选 |
---|---|---|---|
access_token | String | 需要APP服务端通过AK、SK获取,参考 https://ai.baidu.com/docs#/Auth/top | 是 |
onCallback回调说明
参数 | 类型 | 含义 | 值 |
---|---|---|---|
resultCode | int | 错误码 | 0为成功,其他为失败,详情参考实名认证resultCode错误码说明 |
resultMap | HashMap | 回调结果Map | 详情见下表 |
resultMap key值列表说明:
Key值 | 类型 | 含义 |
---|---|---|
resultMsg | String | 详情见resuultCode错误码说明 |
data | String | 服务端返回结果json,只有错误码为0时会返回 此字段,具体内容可以参考实名认证(V4)接口:https://ai.baidu.com/ai-doc/FACE/Tktmssunb |
7.4 人脸采集接口
包含本地质量和本地活体,本地质量可以确保采集到的人脸图像符合各条件校验(满足姿态角、光照、模糊度、遮挡等校验),本地活体分静默活体、炫彩活体、动作活体三种,此接口最终采集到的数据经过加密处理,需要配合开放平台接口使用。人脸对比功能,需要此接口配合AI开放平台人脸对比(v4)接口使用,人脸对比(v4)接口:https://ai.baidu.com/ai-doc/FACE/Oktmssfse 。
返回值 | API | 描述 |
---|---|---|
void | startFaceCollect(Context context, LogicServiceCallbck logicServiceCallbck) | 人脸采集接口 |
onCallback回调说明
参数 | 类型 | 含义 | 值 |
---|---|---|---|
resultCode | int | 错误码 | 0为成功,其他为失败,详情参考实名认证resultCode错误码说明 |
resultMap | HashMap | 回调结果Map | 详情见下表 |
resultMap key值列表说明:
Key值 | 类型 | 含义 |
---|---|---|
resultMsg | String | 详情见resuultCode错误码说明 |
sKey | String | 安全相关:sKey |
xDeviceId | String | 安全相关:xDeviceId |
data | String | 安全相关数据 |
7.5 人脸释放接口
人脸释放接口调用
返回值 | API | 描述 |
---|---|---|
void | release() | 人脸释放接口 |
7.6 人脸相关配置
人脸相关配置来自于百度云控制台下发的console_config.json文件,详情请参考Demo的BaseFragment类中的setFaceQualityConfig()方法和setFaceLivenessConfig()方法,不设置,将使用默认值。
8. OCR相关接口
8.1 OCR初始化接口
返回值 | API | 描述 |
---|---|---|
void | initAccessToken(OnResultListener listener, Context context) | OCR初始化接口 |
入参说明
参数 | 类型 | 含义 | |
---|---|---|---|
context | Context | 上下文 |
onError回调参数说明:
参数 | 类型 | 含义 | |
---|---|---|---|
errorCode | int | 服务端返回错误码,详情见鉴权机制接口:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu | |
errorMessage | String | 服务端返回错误信息,详情见鉴权机制接口:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu |
8.2 OCR识别接口
返回值 | API | 描述 |
---|---|---|
void | startOcrRecognize(Context context, OcrConfig ocrConfig, OcrRecognizeCallback ocrRecognizeCallback) | OCR识别接口 |
入参说明
参数 | 类型 | 含义 | |
---|---|---|---|
context | Context | 上下文 | |
ocrConfig | OcrConfig | OCR配置类 |
OcrConfig配置字段说明
参数 | 类型 | 含义 | |
---|---|---|---|
ocrPageNavigationColor | int | OCR页面导航栏背景色,默认为白色 | |
ocrPageTitleText | String | OCR标题内容,默认为"身份信息采集" | |
ocrPageTitleColor | int | OCR标题颜色,默认为黑色 | |
ocrPageTopText | String | OCR顶部扫描文字,默认为"请将您本人的\n身份证人像面放入框内" | |
ocrPageTopTextColor | int | OCR 顶部扫描文字颜色,默认为白色 |
onError回调参数说明
参数 | 类型 | 含义 | 值 |
---|---|---|---|
errorCode | int | 错误码 | 服务端返回错误码,详情见在线身份证识别接口:https://ai.baidu.com/ai-doc/OCR/rk3h7xzck |
errorMessage | String | 回调结果Map | 服务端返回错误信息,详情见在线身份证识别接口:https://ai.baidu.com/ai-doc/OCR/rk3h7xzck |
9. 代码混淆
-dontwarn com.baidu.idl.**
-keep class com.baidu.idl.** { *; }
-dontwarn com.baidu.vis.**
-keep class com.baidu.vis.** { *; }
-dontwarn com.baidu.liantian.**
-keep class com.baidu.liantian.** { *; }
-dontwarn com.baidu.protect.**
-keep class com.baidu.protect.** { *; }
-dontwarn com.baidu.ocr.**
-keep class com.baidu.ocr.** { *; }
10. 权限
名称 | 说明 | 必选 |
---|---|---|
需要动态申请的权限 | ||
android.permission.CAMERA | 拍照权限 | 是 |
android.permission.RECORD_AUDIO | 录音权限(录制视频) | 否 |
android.permission.READ_EXTERNAL_STORAGE | 读取手机外部存储权限(安全相关、OCR相关) | 否 |
不需要动态申请的权限 | ||
android.permission.INTERNET | 允许访问网络 | 是 |
android.permission.ACCESS_NETWORK_STATE | 获取网络状态权限 | 是 |
android.permission.READ_PHONE_STATE | 允许访问电话状态权限 | 是 |
android.hardware.camera.autofocus | 允许相机对焦(OCR相关) | 否 |
android.permission.GET_TASKS | 允许访问当前运行的任务信息 (安全相关) | 是 |
11. 不使用OCR,只使用人脸相关能力
不使用OCR,可以删除ocr-ui.aar、aip.license,以及OCR相关代码。 OCR初始化代码如下图所示:
OCR调用代码如下图所示:
设置页面,关闭OCR运行Demo即可。