前言
本篇仅介绍基础版核身SDK Android端的调用流程,涉及需合作方服务端开发的接口请参考另一篇文章人脸核身APP接入-服务端Python demo。
SDK文档
android support sdk:https://share.weiyun.com/5VTnQgj,官网文档中有提供该下载地址,内含demo。
androidx sdk:请通过官网在线咨询。
sdk接口文档:https://cloud.tencent.com/document/product/1007/35870
sdk接入示例:https://cloud.tencent.com/document/product/1007/35872
调用流程
初始化SDK
基础版人脸核身Android SDK的初始化主要是对参数的初始化,主要分为两方面的参数,一方面是合作方业务配置参数,这部分参数都被封装在WbCloudFaceVerifySdk.InputData 对象中, 它是一个 Serializable 对象,相关参数字段说明可参考下方表格。另一方面是SDK界面定制和功能配置参数,可通过SDK提供的相关字段进行配置。
1、初始化WbCloudFaceVerifySdk.InputData参数:
代码语言:javascript复制WbCloudFaceVerifySdk.InputData inputData = new WbCloudFaceVerifySdk.InputData(faceId, agreementNo,
openApiAppId, openApiAppVersion, openApiNonce, openApiUserId, openApiSign, verifyMode, keyLicence);
如果参数字段值有误,便无法正常拉起人脸核身SDK流程。 WbCloudFaceVerifySdk.InputData inputData 参数字段列表:
参数名 | 参数来源 | 参数描述 | 长度 |
---|---|---|---|
faceId | 服务端获取 | 本次刷脸标识,有效期5分钟,每次进行人脸核身都需要重新获取 | - |
agreementNo | 合作方生成 | 订单号,字母/数字组成的字符串,由合作方上送,每次唯一,不能超过32位 | 32 |
openApiAppId | 控制台申请 | 业务流程唯一标识,即WBappid | 8 |
openApiAppVersion | 固定参数 | 接口版本号,默认填:1.0.0,如果版本号不对会报“SDK登录失败:网络异常”错误 | 20 |
openApiNonce | 合作方生成 | 计算签名的32位随机字符串 | 32 |
openApiUserId | 合作方生成 | 合作方用户的唯一标识(不能带有特殊字符),不能超过32位 | 32 |
openApiSign | 合作方生成 | 本次人脸核身服务的签名信息,由wbappid、userId、version 连同 ticket、nonce 共五个参数进行排序和编码后生成一个40位字符串作为签名 | 40 |
FaceVerifyStatus.Mode | 固定参数 | 刷脸类别,默认分级模式 FaceVerifyStatus.Mode.GRADE | - |
keyLicence | 控制台申请 | 与包名关联,如果包名不对会报keyLicence不可用,业务申请后包名不可修改,只能重新申请或者新添加一个。 | - |
2、设置个性化界面和功能配置参数:
- 界面主体颜色配置,SDK提供了白色和黑色两种主题模式,默认显示白色模式。也支持自定义皮肤和定制刷脸过程中界面各组件元素颜色。
- 配置是否显示成功和失败页面。
- 定制化提示语,分短提示语和长提示语,长提示语需合作方发送邮件申请。
- 主动退出核验界面时定制化二次确认弹框的文字内容,包括标题、提示内容、确认键和取消键文案。
- 配置比对类型,分权威库数据源比对和自带比对源比对两种类型。
- 配置是否录制视频存证,如果配置为是,验证结果中就可以获取到对应视频,控制台也会显示。
- 配置是否播放语音提示,需腾讯云服务端配置对应的活体检测模式。
效果图如下:
3、初始化SDK:
调用初始化方法代码:
代码语言:javascript复制WbCloudFaceVerifySdk.getInstance().initSdk(MainActivity.this, inputBundle, wbLoginListener)
第1、2步中的所有参数都会通过inputBundle传递给SDK。调用初始化后,会通过wbLoginListener对象的回调方法通知初始化登录成功或失败。
拉起核身流程
如果SDK初始化成功,便可以启动核身流程。
如果SDK初始化失败,启动核身流程会提示“初始化SDK异常”。
如果SDK未初始化,启动核身流程,则会报错:
Caused by: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.webank.facelight.api.WbCloudFaceVerifySdk$InputData.agreementNo' on a null object reference
启动人脸核身流程,调用如下方法拉起人脸核身SDK:
代码语言:javascript复制WbCloudFaceVerifySdk.getInstance().startWbFaceVerifySdk(MainActivity.this, wbResultListener)
该启动方法中通过wbResultListener对象的回调返回核验结果成功或失败相关信息。
核验界面中,如果长时间(约30s)未检测到人脸,会自动退出刷脸界面,并会提示“刷脸失败:人脸在框检测超时”。
核验流程结束后,如果配置了展示成功或失败界面,则会跳转到对应页面。
返回核验结果
SDK的核验结果是通过启动核身时传递的WbCloudFaceVerifyResultListener接口对象回调返回的。
1、核验成功:SDK会通过WbFaceVerifyResult对象将核验结果信息返回给APP,见WbFaceVerifyResult对象说明。包括核验是否成功、核验结果的签名、订单号、活体检测分数、人脸比对分数、核身的人脸图片base64编码等。
2、核验失败:SDK会通过WbFaceError对象将核验错误信息返回给APP,见WbFaceError对象说明。包括错误码和错误信息内容等。
后端获取结果
合作方服务端可以生成签名(见合作方后台生成签名)后,通过调用身份认证查询接口查询结果。
注:这里获取结果的签名与初始化SDK时的签名并非同一签名,他们的生成规则不一样。
1、合作方服务端验证结果:合作方服务端先按照规则生成核验签名,然后调用身份认证查询接口获取核验结果。该方式可以获取到包括人脸核身视频在内的更多详细信息。
2、另外,合作方服务端按照规则生成核验签名后,还可以调用人脸认证多张照片查询接口 获取人脸认证结果的多张照片。