这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

人脸核身功能有多种接入方式,其中包含微信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() {
}
});

此处的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 null
values.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.0
sign: _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);
}
);

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

本文转载于:

https://blog.csdn.net/u011511921/article/details/106951123/

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

记录--Uni-app接入腾讯人脸核身的更多相关文章

  1. adobe air类app 接入腾讯开放平台移动游戏使用带tencent包名前缀的问题

    作者:Panda Fang 出处:http://www.cnblogs.com/lonkiss/p/4209159.html 原创文章,转载请注明作者和出处,未经允许不可用于商业营利活动 ------ ...

  2. 小程序嵌套h5webview.特定时间跳转小程序页面.调起e证通的人脸核身.成功了返回webview.

    e证通链接. https://cloud.tencent.com/document/product/1007/56643#3.2-.E5.AE.89.E8.A3.85-sdk

  3. 移动 App 接入 QQ 登录/分享 图文教程

    移动 App 接入 QQ 登录/分享 图文教程 这里先要提两个平台,腾讯开放平台和 QQ 互联平台: (一)腾讯开放平台 官网地址:https://open.tencent.com/ 介绍:腾讯开放平 ...

  4. Android 接入腾讯IM即时通信(详细图文)

    原文地址:Android 接入腾讯IM即时通信(详细图文) | Stars-One的杂货小窝 腾讯云IM官网文档上提供了带UI模块和不带UI模块的,本文是基于带UI模块进行了Module封装,可以方便 ...

  5. 5月第2周业务风控关注 | 央行:严禁未经授权认可的APP接入征信系统

    本文由  网易云发布. 易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.央行 ...

  6. vue接入腾讯防水墙代码

    vue接入腾讯防水墙代码 开始创建代码: 登陆调用方法代码

  7. ThinkPHP5——接入腾讯云短信API

    接入腾讯云短信API相当简单,最重要的是第一次使用腾讯云短信的话有100条免费短信可以测试,对于开发人员是足够了,下面我就教大家接入腾讯云短信. 第一步:准备工作 首先要在腾讯云短信申请短信签名与短信 ...

  8. uni app中使用自定义图标库

    项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...

  9. 【直播】APP全量混淆和瘦身技术揭秘

    [直播]APP全量混淆和瘦身技术揭秘 近些年来移动APP数量呈现爆炸式的增长,黑产也从原来的PC端转移到了移动端,通过逆向手段造成数据泄漏.源码被盗.APP被山寨.破解后注入病毒或广告现象让用户苦不堪 ...

  10. 【手把手教程】uniapp + vue 从0搭建仿斗鱼虎牙直播App:腾讯云MLVB移动直播实践连麦PK+带货

    基于uniapp + vue 实现仿斗鱼虎牙腾讯云移动直播应用实践,实现以下功能 1: 用户登陆 2: 房间管理 3: 房间聊天 4: 直播美颜 5: Svga礼物动画 6: 一对一连麦观众 项目开发 ...

随机推荐

  1. Linux shell的while循环

    while循环 #!/bin/bash #其中":"表示while循环的条件永远为真的意思 while : do read -p "Enter a number [1-5 ...

  2. 推荐一款id生成器: Hashids

    唯一 id 生成的方式有很多种,比较常见的有以下几种方式: 语言自带功能,如 Java 中的 UUID,常用于后端 第三方工具提供,如 npm 中的 nanoid,常用于前端 Twitter 开源的 ...

  3. 用ELK分析每天4亿多条腾讯云MySQL审计日志(4)--MySQL全文索引

    前言:        该文章将会介绍以下: 1,MySQL全文索引的使用 2,全文索引停止词STOPWORD 3,使用全文索引的高效和准确 最近事情比较少,刚好可以梳理一下以前的工作,做一下总结! 在 ...

  4. RestTemplate的一些坑和改造点

    一.RestTemplate怎么引入和使用 在pom.xml文件中加入如下dependency: <dependency> <groupId>org.springframewo ...

  5. 【Android 逆向】【攻防世界】easyjava

    1. apk 安装到手机,提示输入flag 2. jadx 打开apk看看 private static char a(String str, b bVar, a aVar) { return aVa ...

  6. OpenCV开发笔记(五十七):红胖子8分钟带你深入了解直方图反向投影(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  7. vue 前端自动打开文件地址进行下载

    最近在做异步导出的功能,导出的过程中前端另外启动一个查询导出进度的线程接口.如果导出完成后,把生成的文件上传到服务器,返回给前端一个文件的下载地址:前端自动打开这个地址进行跳转下载. 有两种方式 1. ...

  8. SUB-LVDS 与LVDS 互联

    SUB-LVDS 与 LVDS介绍 电气规范 今天有同学问SUB-LVDS输出是否能接到LVDS输入上,以前没用过SUB-LVDS,一起学习一下. Sub-LVDS is a differential ...

  9. 面试必备:一线大厂Redis缓存设计规范与性能优化

    说在前面 你是否在使用Redis时,不清楚Redis应该遵循的设计规范而苦恼? 你是否在Redis出现性能问题时,不知道该如何优化而发愁? 你是否被面试官拷问过Redis的设计规范和性能优化而回答不出 ...

  10. TensorFlow 回归模型

    TensorFlow 回归模型 首先,导入所需的库和模块.代码中使用了numpy进行数值计算,matplotlib进行数据可视化,tensorflow进行机器学习模型的构建和训练,sklearn进行多 ...