记录--Uni-app接入腾讯人脸核身

这篇具有很好参考价值的文章主要介绍了记录--Uni-app接入腾讯人脸核身。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

记录--Uni-app接入腾讯人脸核身

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

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

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

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

记录--Uni-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接入腾讯人脸核身文章来源地址https://www.toymoban.com/news/detail-825121.html

到了这里,关于记录--Uni-app接入腾讯人脸核身的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app+云函数+百度AI(人脸检测,人脸库注册,人脸1:N搜索)

    Hbuilderx编辑器(代码编辑器) unicloud(云服务空间,本项目采用的是 阿里云 ) 百度智能云 (人脸识别API,有免费测试资源可用) 1.创建项目,启动云开发,选择阿里云 2.新建云函数 face --- 百度AI人脸识别业务 face_token --- 生成与更新百度AI所需要的access_token getTable --- 获取人脸签

    2024年02月02日
    浏览(60)
  • uni-app根据腾讯地图接口三级联动组件

    有时候很懵逼,因为需要用到腾讯地图接口的三级联动,习惯问问度娘,结果出来了我几年前用JQ写的,好吧,还是自己撸一个现在用的吧 组件使用得是uni-popup弹窗,picker-view 滑动选择地址 访问腾讯地图接口使用的是 vue-jsonp  在main.js引入 组件address.vue 组件只需要填写你自

    2024年01月20日
    浏览(58)
  • 关于uni-app小程序接入微信登录

    https://uniapp.dcloud.net.cn/api/plugins/login.html#login 官网上有关于uni.login()的说明,如果是要微信登录,则需要wx.login()。 小程序登录 | 微信开放文档         如下图,在小程序管理平台生成AppSecret,同时将AppId在HubilderX中配置。           在HbuilderX中使用wx.login获取到code,然后调用

    2024年02月11日
    浏览(59)
  • uni-app 小程序使用腾讯地图完成搜索功能

    前言 使用uni-app开发小程序时候使用腾讯地图原生SDK是,要把原生写法转成vue写法在这记录一下。 我们需要注意的是使用高德地图时我们不仅要引入SDK,还要再uni-app中配置允许使用。 由于uni-app内置地图就是腾讯,所以获取位置的api,uni.getLocation坐标不用转换,直接使用。

    2024年02月08日
    浏览(63)
  • uni-app 小程序使用什么地图好(百度,高德,腾讯)

    前言 在开发小程序的时候我们会发现经常需要地图的使用,但是市面上主流的地图有腾讯,高德,百度。哪个好了 其实在我看来这个3地图没有好坏之分,各有所长。只是说哪个地图写小程序更加轻便,更加低耦合。 后面我把他们都试了一下发现,他们的使用方式都差不多,

    2024年02月09日
    浏览(89)
  • Uni-app 小程序使用腾讯云IM实时通讯

    // IM 小程序 SDK npm install tim-wx-sdk --save // 发送图片、文件等消息需要的 COS SDK  如果不需要发送图片等文件不需要下载 在APP.vue中配置好你的腾讯云配置 我测试了一下如果直接引入:import TIM from \\\'tim-wx-sdk\\\'的话在添加好友的地方会有错误 所以我找到了这种引入方式 :import TIM

    2024年02月15日
    浏览(58)
  • 三分钟完成小程序 uni-app、网站接入chatgpt实现聊天效果

    1.实现后台接口 注册laf云开发账号 https://laf.dev/ 注册一个应用后进入这个页面: 下载依赖 chatgpt 配置apiKey 写send函数 配置你的apiKey 2.uni-app小程序代码中 //封装cloud 发送消息方法 微信小程序中使用 3.实现效果 在这里插入图片描述

    2024年02月11日
    浏览(53)
  • uni-app开发记录

    目录 uni-app目录结构 uni-app中的事件 uni-app中的组件通信 页面通信 组件间通信 节点操作 定义全局scss变量 APP相关 解决uniapp编译到APP出现页面抖动与滑动条 tabbar添加一个位于中间的按钮 uni.pageScrollTo滚动问题 静态资源只能存放在static文件夹内 通过 uni.$emit(\\\"事件名\\\",val) 创建事件

    2024年02月05日
    浏览(73)
  • uni-app学习记录

    暑假浅学一下uni-app,试着用博客记录一下  目录 1.项目目录 2.全局配置 3.页面配置 4.tabBar配置 5.condition配置 6.组件的基本使用 1)text文本组件 2)view视图容器组件 3)button按钮组件 4)image图片组件 7.uni-app中的样式 8.uni-app中的数据绑定 1)插值表达式的使用 2)v-bind的使用 3)

    2024年02月09日
    浏览(49)
  • C# 基于腾讯云人脸核身和百度云证件识别技术相结合的 API 实现

    目录 腾讯云人脸核身技术 Craneoffice.net 采用的识别方式         1、活体人脸核身(权威库):         2、活体人脸比对:         3、照片人脸核身(权威库): 调用成本 百度云身份证识别 调用成本 相关结合点 核心代码 实现调用人脸核身API的示例  实现调用身份证识别API的示

    2024年02月08日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包