Uni-app接入腾讯人脸核身
人脸核身功能有多种接入方式,其中包含微信H5、微信小程序、APP、独立H5、PC端、API接入6种方式。
我们的产品是使用uni-app来开发,所以第一时间考虑使用H5方式接入,但是通过与官方技术人员对接后得知,uni-app是有原生插件可以用的,所以可以使用app的方式接入,原生的插件方式接入会让用户体验更好,所以本文也是围绕着APP原生插件的方式接入。
准备工作
首先需要申请服务,此服务并不是直接购买,而是需要提交申请,通过人工审核后才可以使用(申请链接)
申请通过后,在控制台创建应用,如图
添加官方技术人员微信(vx:faceid001),索要license,后面需要用到
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() {}});
{"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的加密代码
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$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接入腾讯人脸核身相关推荐
- Android 人脸实名验证demo——腾讯人脸核身·云智慧眼
可以说比较容易实现:只需要获取BizToken,再起调腾讯SDK即可 1.首先登录腾讯云平台,申请权限,创建应用 腾讯云: https://cloud.tencent.com/ 2.配置应用信息及实名 ...
- 腾讯云人脸核身相关问题
如何申请腾讯云人脸核身的接入? 打开腾讯云 介绍页 ,单击页面上的[立即申请],填写具体业务需求并上传工商营业执照,提交接入申请即可. 申请使用腾讯云慧眼人脸核身有哪些限制? 申请开通人脸核身服务是没 ...
- 微信小程序人脸核身---快速入门到实战(附开发工具类,复制即用)
文章目录 一.基本介绍 1.概述 2.功能特点 3.使用场景 二.术语概述 基础参数说明 DetectAuth(实名核身鉴权) GetDetectInfo(获取实名核身结果信息) 三.基本接口说明使用 ...
- AI 腾讯云人脸核身之独立H5接入
文章目录 一.概述 二.合作方后台上送身份信息~实现流程 2.1. 前端入参 2.2. 后端固定参数 2.3. 获取 Access Token 2.4. 获取 SIGN ticket 2.5. 生成签 ...
- java腾讯云人脸核身移动浮层H5接入
腾讯云人脸核身文档 最近公司有业务需求,需要对企业微信中的小程序添加人脸识别功能,一般的人脸核身是对app中添加sdk完成的,考虑到业务需要,采用腾讯云的移动浮层H5接入,废话不多说,直接上代码. 这 ...
- AI-腾讯云人脸核身之独立H5接入
概述 AI人脸识别,使用官方API:腾讯云人脸核身之独立H5接入.接口官方返回code = 0 表示成功,其他code码值均为对应码值信息,详见错误码. 注意: 1.合作方上送身份信息的计算签名参数与 ...
- Android 快速接入腾讯云人脸核身(识别)
Android 通过 SDK 快速接入腾讯云人脸核身 我的接入代码:https://blog.csdn.net/qq_39836064/article/details/108702725,很久之前写的 ...
- 微信公众号HTML5接入腾讯云人脸核身
微信公众号HTML5接入腾讯云人脸核身 概述 接入流程 原生H5对行业的要求 概述 针对微信公众号接入腾讯云,腾讯云提供了两种方案,一种是通用H5接入,另外一种是通过微信的原生H5来接入,但是一般都是 ...
- uniapp 腾讯云活体人脸核身(超详细)
第一步(准备) 1.申请腾讯云服务,去申请 2.申请通过后,在控制台创建应用,去控制台 3.licence,最后调用SDK时需要用到,添加官方技术人员微信(vx:faceid001)索要 第二步(获取 ...
最新文章
- python中complex函数的用法_Python 内置函数complex详解
- 记一次mongoDB-@Document(collection = “XXX“)配置的探索
- 看了这篇C++笔记,你出去行走江湖我就放心了【C++】
- 变局之际,聊聊物联网的过去、现在和未来
- 独占设备的分配与回收_灵魂拷问:Java对象的内存分配过程是如何保证线程安全的?...
- Java:出生日期转年龄
- PID控制的输入量与输出量的关系
- 04.通过qss文件设置setStyleSheet
- keepalived架设简单高可用的nginx的web服务器 ----那些你不知道的秘密
- BZOJ2879 [Noi2012]美食节
- 【ZOJ 4097 The 19th Zhejiang University Programming Contest H】Rescue the Princess【边双连通缩点+LCA】
- Google搜索技巧大全:101个谷歌搜索技巧推荐
- 商务与经济统计学习笔记整理/安德森/第13版
- 懒牛人脉管家 v4.4.5
- 项目小记录—拼音码demo
- python爬取去哪儿网机票_去哪儿网机票爬虫
- 计算机英文积累(一)
- 11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
- 基于文档注释接口文档生成工具(代码0侵入附源码)
- linux下eclipse开发storm,如何在eclipse调试storm程序?
热门文章
- luogu P1332 血色先锋队[bfs]
- R语言ggplot2可视化:可视化时间序列季节图、使用季节图可以比较不同年份相同月份的数据差异、或者相同(年/月/周等)的时间序列在同一天的数据差异(Seasonal Plot)
- Linux中软件的安装方式
- Neo4j安装事项报错:powershell命令提示符出现“不是内部或外部命令,也不是可运行的程序或批处理文件
- python考试报名费用_计算机python二级考试报名
- ISASearch:基于分布式爬虫的信安技术文章搜索引擎
- python 字典写入excel_Openpyxl – 从字典写入excel的行和列
- C#设计模式实现-中介者模式(Media Partten)
- 无线电广播和接收概述
- 身份证校验(//身份证号合法性验证 //支持15位和18位身份证号//支持地址编码、出生日期、校验位验证)