人脸核身APP接入-Android端实现

2021-10-26 18:06:44 浏览数 (1)

前言

本篇仅介绍基础版核身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、另外,合作方服务端按照规则生成核验签名后,还可以调用人脸认证多张照片查询接口 获取人脸认证结果的多张照片。

0 人点赞