​ 人脸核身功能有多种接入方式,其中包含微信H5、微信小程序、APP、独立H5、PC端、API接入6种方式。

​ 我们的产品是使用uni-app来开发,所以第一时间考虑使用H5方式接入,但是通过与官方技术人员对接后得知,uni-app是有原生插件可以用的,所以可以使用app的方式接入,原生的插件方式接入会让用户体验更好,所以本文也是围绕着APP原生插件的方式接入。

准备工作

  1. 首先需要申请服务,此服务并不是直接购买,而是需要提交申请,通过人工审核后才可以使用(申请链接)

  2. 申请通过后,在控制台创建应用,如图

  1. 添加官方技术人员微信(vx:faceid001),索要license,后面需要用到

  2. uni-app插件市场添加人脸核身(DC-WBOCRService)和ocr识别插件(DC-WBOCRService)

至此,前期接入准备工作已经完成。

接入步骤

获取AccessToken(官方文档)

接口地址:https://idasc.webank.com/api/oauth2/access_token

参数:

app_id: _this.app_id,
secret: _this.secret,
grant_type: 'client_credential',
version: '1.0.0'

请求代码:

uni.request({url: 'https://idasc.webank.com/api/oauth2/access_token',data: {app_id: _this.app_id,secret: _this.secret,grant_type: 'client_credential',version: '1.0.0'},success(res) {_this.access_token = res.data.access_token;console.log(res.data);console.log('access_token:' + _this.access_token);},fail(e) {console.log(e);},complete() {}});

此处的grant_type和version为固定参数

响应结果:

{"code":"0","msg":"请求成功","transactionTime":"20151022043831","access_token":"accessToken_string","expire_time":"20151022043831","expire_in":"7200"
}
获取NONCE ticket(官方文档)

接口地址:https://idasc.webank.com/api/oauth2/api_ticket

参数:

app_id: _this.app_id,
access_token: _this.access_token,
type: 'NONCE',
version: _this.version,
user_id: _this.userId

请求代码:

uni.request({url: 'https://idasc.webank.com/api/oauth2/api_ticket',data: {app_id: _this.app_id,access_token: _this.access_token,type: 'NONCE',version: _this.version,user_id: _this.userId},success(res) {_this.showToast(res.data);_this.ticket = res.data.tickets[0].value;console.log('ticket:' + _this.ticket);},fail(e) {console.log(e);_this.showToast(e.code);},complete() {uni.hideLoading();}});

响应结果:

{"code": "0","msg": "请求成功","transactionTime": "20151022044027","tickets": [{"value": "ticket_string","expire_in": "120","expire_time": "20151022044027"}]
}
获取签名(官方文档)

从文档上来看是需要将wbappid userId nonceStr version ticket放在数组中进行排序,然后使用sha1算法进行加密得到一串40位的签名。

我从本地使用sha1库进行加密,然而返回结果一直报错,通过与官方技术人员沟通得知此步骤加密必须在服务端进行,所以下方列出java和php的加密代码

Java:

public static String sign(List<String> values, String ticket) {if (values == null) {throw new NullPointerException("values is null");}values.removeAll(Collections.singleton(null));// remove nullvalues.add(ticket);java.util.Collections.sort(values);StringBuilder sb = new StringBuilder();for (String s : values) {sb.append(s);}return Hashing.sha1().hashString(sb, Charsets.UTF_8).toString().toUpperCase();
}

PHP:

<?php$arr_test =array('TIDApint','kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T','xxx','xxxxxxxx','kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T','1.0.0','jMgg28AVjLmmzUUU5bFS4jhhpzi9HUbp8ggtvGyAIIsn8aedN68xs88GYxvnEjp6');print_r('</br>');
print_r('参加字典排序的参数为   ');
print_r($arr_test);$arr_test = array_values($arr_test);
asort($arr_test);
$arr_test =implode('',$arr_test);print_r('</br>');
print_r('字典排序为   ');
print_r($arr_test);$sign = sha1($arr_test);
print_r('</br>');
print_r('签名值为  ');
print_r($sign);?>

注意:这一步必须在服务端进行处理

获取FaceId(官方文档)

请求地址:https://idasc.webank.com/api/server/getfaceid

参数:

webankAppId: _this.app_id,
orderNo: _this.orderNo, //订单号,由合作方上送,每次唯一,不能超过32位
name: _this.idCardInfo.name, //姓名
idNo: _this.idCardInfo.cardNum, //证件号码
userId: _this.userId, //用户 ID ,用户的唯一标识(不能带有特殊字符)
sourcePhotoStr: '', //比对源照片,注意:原始图片不能超过500KB,且必须为 JPG 或 PNG 格式;参数有值:使合作伙伴提供的比对源照片进行比对,必须注照片是正脸可信照片,照片质量由合作方保证;参数为空 :根据身份证号+姓名使用权威数据源比对
sourcePhotoType: '2', //比对源照片类型,注意: 如合作方上送比对源则必传,使用权威数据源可不传;参数值为1:水纹正脸照;参数值为2:高清正脸照
version: _this.version, //默认参数值为:1.0.0
sign: _this.sign //签名:使用上文 生成的签名

请求代码:

uni.request({url: 'https://idasc.webank.com/api/server/getfaceid',method: 'POST',data: {webankAppId: _this.app_id,orderNo: _this.orderNo, //订单号,由合作方上送,每次唯一,不能超过32位name: _this.idCardInfo.name, //姓名idNo: _this.idCardInfo.cardNum, //证件号码userId: _this.userId, //用户 ID ,用户的唯一标识(不能带有特殊字符)sourcePhotoStr: '', //比对源照片,注意:原始图片不能超过500KB,且必须为 JPG 或 PNG 格式;参数有值:使合作伙伴提供的比对源照片进行比对,必须注照片是正脸可信照片,照片质量由合作方保证;参数为空 :根据身份证号+姓名使用权威数据源比对sourcePhotoType: '2', //比对源照片类型,注意: 如合作方上送比对源则必传,使用权威数据源可不传;参数值为1:水纹正脸照;参数值为2:高清正脸照version: _this.version, //默认参数值为:1.0.0sign: _this.sign //签名:使用上文 生成的签名},success(res) {_this.faceId = res.data.result.faceId;console.log(res.data);},fail(e) {console.log(e);},complete() {}});

响应结果:

{"code": 0,
"msg": "成功",
"result": {"bizSeqNo":"业务流水号","orderNo":"合作方订单号","faceId":"cc1184c3995c71a731357f9812aab988"}
}

通过上面4个步骤已经获取到了我们需要的所有参数,接下来就可以调用原生插件来实现人脸认证了。

uni-app中调用人脸核身插件进行人脸认证
const face = uni.requireNativePlugin('DC-WBFaceService');face.startWbFaceVerifyService({userId: this.userId,nonce: this.nonceStr,sign: this.sign,appId: this.app_id,orderNo: this.orderNo,apiVersion: this.version,licence: this.licence,faceType: '1',compareType: '0',faceId: this.faceId,sdkConfig: {//Android和iOS共有的配置参数showSuccessPage: true, //是否展示成功页面showFailurePage: true, //是否展示失败页面recordVideo: true, //是否录制视频playVoice: true, //是否播放语音提示detectCloseEyes: true, //是否检测用户闭眼theme: '1', //sdk皮肤设置,0黑色,1白色//android独有的配置参数isEnableLog: true, //是否打开刷脸native日志,请release版本关闭!!!//iOS独有的配置参数windowLevel: '1', //sdk中拉起人脸活体识别界面中使用UIWindow时的windowLevel配置manualCookie: true //是否由SDK内部处理sdk网络请求的cookie}},result => {console.log('【uni log】face SDK callback ================> result.');console.log(result);});

到这一步,就可以实现人脸核身了。

Uni-app接入腾讯人脸核身相关推荐

  1. Android 人脸实名验证demo——腾讯人脸核身·云智慧眼

    可以说比较容易实现:只需要获取BizToken,再起调腾讯SDK即可 1.首先登录腾讯云平台,申请权限,创建应用 腾讯云: https://cloud.tencent.com/ 2.配置应用信息及实名 ...

  2. 腾讯云人脸核身相关问题

    如何申请腾讯云人脸核身的接入? 打开腾讯云 介绍页 ,单击页面上的[立即申请],填写具体业务需求并上传工商营业执照,提交接入申请即可. 申请使用腾讯云慧眼人脸核身有哪些限制? 申请开通人脸核身服务是没 ...

  3. 微信小程序人脸核身---快速入门到实战(附开发工具类,复制即用)

    文章目录 一.基本介绍 1.概述 2.功能特点 3.使用场景 二.术语概述 基础参数说明 DetectAuth(实名核身鉴权) GetDetectInfo(获取实名核身结果信息) 三.基本接口说明使用 ...

  4. AI 腾讯云人脸核身之独立H5接入

    文章目录 一.概述 二.合作方后台上送身份信息~实现流程 2.1. 前端入参 2.2. 后端固定参数 2.3. 获取 Access Token 2.4. 获取 SIGN ticket 2.5. 生成签 ...

  5. java腾讯云人脸核身移动浮层H5接入

    腾讯云人脸核身文档 最近公司有业务需求,需要对企业微信中的小程序添加人脸识别功能,一般的人脸核身是对app中添加sdk完成的,考虑到业务需要,采用腾讯云的移动浮层H5接入,废话不多说,直接上代码. 这 ...

  6. AI-腾讯云人脸核身之独立H5接入

    概述 AI人脸识别,使用官方API:腾讯云人脸核身之独立H5接入.接口官方返回code = 0 表示成功,其他code码值均为对应码值信息,详见错误码. 注意: 1.合作方上送身份信息的计算签名参数与 ...

  7. Android 快速接入腾讯云人脸核身(识别)

    Android 通过 SDK 快速接入腾讯云人脸核身 我的接入代码:https://blog.csdn.net/qq_39836064/article/details/108702725,很久之前写的 ...

  8. 微信公众号HTML5接入腾讯云人脸核身

    微信公众号HTML5接入腾讯云人脸核身 概述 接入流程 原生H5对行业的要求 概述 针对微信公众号接入腾讯云,腾讯云提供了两种方案,一种是通用H5接入,另外一种是通过微信的原生H5来接入,但是一般都是 ...

  9. uniapp 腾讯云活体人脸核身(超详细)

    第一步(准备) 1.申请腾讯云服务,去申请 2.申请通过后,在控制台创建应用,去控制台 3.licence,最后调用SDK时需要用到,添加官方技术人员微信(vx:faceid001)索要 第二步(获取 ...

最新文章

  1. python中complex函数的用法_Python 内置函数complex详解
  2. 记一次mongoDB-@Document(collection = “XXX“)配置的探索
  3. 看了这篇C++笔记,你出去行走江湖我就放心了【C++】
  4. 变局之际,聊聊物联网的过去、现在和未来
  5. 独占设备的分配与回收_灵魂拷问:Java对象的内存分配过程是如何保证线程安全的?...
  6. Java:出生日期转年龄
  7. PID控制的输入量与输出量的关系
  8. 04.通过qss文件设置setStyleSheet
  9. keepalived架设简单高可用的nginx的web服务器   ----那些你不知道的秘密
  10. BZOJ2879 [Noi2012]美食节
  11. 【ZOJ 4097 The 19th Zhejiang University Programming Contest H】Rescue the Princess【边双连通缩点+LCA】
  12. Google搜索技巧大全:101个谷歌搜索技巧推荐
  13. 商务与经济统计学习笔记整理/安德森/第13版
  14. 懒牛人脉管家 v4.4.5
  15. 项目小记录—拼音码demo
  16. python爬取去哪儿网机票_去哪儿网机票爬虫
  17. 计算机英文积累(一)
  18. 11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
  19. 基于文档注释接口文档生成工具(代码0侵入附源码)
  20. linux下eclipse开发storm,如何在eclipse调试storm程序?

热门文章

  1. luogu P1332 血色先锋队[bfs]
  2. R语言ggplot2可视化:可视化时间序列季节图、使用季节图可以比较不同年份相同月份的数据差异、或者相同(年/月/周等)的时间序列在同一天的数据差异(Seasonal Plot)
  3. Linux中软件的安装方式
  4. Neo4j安装事项报错:powershell命令提示符出现“不是内部或外部命令,也不是可运行的程序或批处理文件
  5. python考试报名费用_计算机python二级考试报名
  6. ISASearch:基于分布式爬虫的信安技术文章搜索引擎
  7. python 字典写入excel_Openpyxl – 从字典写入excel的行和列
  8. C#设计模式实现-中介者模式(Media Partten)
  9. 无线电广播和接收概述
  10. 身份证校验(//身份证号合法性验证 //支持15位和18位身份证号//支持地址编码、出生日期、校验位验证)