微信小程序人脸核身---快速入门到实战(附开发工具类,复制即用)
文章目录
- 一、基本介绍
- 1.概述
- 2.功能特点
- 3.使用场景
- 二、术语概述
- 基础参数说明
- DetectAuth(实名核身鉴权)
- GetDetectInfo(获取实名核身结果信息)
- 三、基本接口说明使用
- DetectAuth(实名核身鉴权)
- GetDetectInfo(获取实名核身结果信息)
- 四、开发工具类
这里我们使用腾讯云的人脸核身来给大家做一个基础的介绍和使用
一、基本介绍
1.概述
人脸核身:一般是对一组对用户身份信息真实性进行验证审核的服务套件提供各类认证功能模块,包含证件 OCR 识别、活体检测、人脸1 : 1对比等能力,以解决行业内大量对用户身份信息核实的需求。
2.功能特点
OCR 识别
支持识别身份证正反面,一次扫描即可返回身份证号、姓名、有效时间等所有字段,数字识别准确率达到 99.9% 以*上,在多个字段上处于领先水平。处理倾斜、暗光、曝光、阴影等异常情况稳定性好,自适应判别纠正技术大大提高识别准确率。
活体检测
活体检测, 主要针对高安全性要求的人脸核身验证而研发的一种技术, 防止照片、视频、静态3D建模等各种不同类型的攻击; 目前支持唇语读数、动作、静默等多种活体模式,适用于多类验证场景。
1:1人脸比对
人脸比对,根据面部特征,计算两张人脸的相似度,自动进行身份鉴别。立足于腾讯社交数据大平台收集的海量人脸训练集,结合高维 LBP、PCA、LDA 联合贝叶斯、度量学习、迁移学习、深度神经网络,2017年 LFW 测评准确度为 99.80%。并支持多场景下的识别验证,对年龄、姿态及光强均有较好的支持度。
3.使用场景
- 综合政务服务、公安微警务、工商企业注册、养老金领取生存验证等
- 银行开户、保险验证
- 各大运营提供的在线申请号码、购买手机卡、预装宽带等 网吧上网实名登记、酒店住宿实名登记等
- 机场安检登机、铁路安检购票、长途客运购票、边检口岸通关等
二、术语概述
我们主要是使用其中的两个接口,DetectAuth(实名核身鉴权)、GetDetectInfo(获取实名核身结果信息)。这两个功能基本可以实现我们的的人脸核身这个功能需求。
基础参数说明
参数名称 | 类型 | 必选 | 描述 |
---|---|---|---|
Action | String | 是 | 操作的接口名称。取值参考接口文档中输入参数公共参数 Action 的说明。例如云服务器的查询实例列表接口,取值为 DescribeInstances。 |
ruleid | String | 是 | 用于调用配置的业务流程,可在 人脸核身控制台-自助接入 创建业务流程,流程审核通过后,系统会自动创建流程并分配业务 ID(ruleid),创建 ruleid 的过程中,需要确定以下问题: |
Region | String | 是 | 地域参数,用来标识希望操作哪个地域的数据。接口接受的地域取值参考接口文档中输入参数公共参数 Region 的说明。注意:某些接口不需要传递该参数,接口文档中会对此特别说明,此时即使传递该参数也不会生效。 |
Timestamp | Integer | 是 | 当前 UNIX 时间戳,可记录发起 API 请求的时间。例如1529223702,如果与当前时间相差过大,会引起签名过期错误。 |
Nonce | Integer | 是 | 随机正整数,与 Timestamp 联合起来,用于防止重放攻击。 |
SecretId | String | 是 | 在云API密钥上申请的标识身份的 SecretId,一个 SecretId 对应唯一的 SecretKey ,而 SecretKey 会用来生成请求签名 Signature。 |
Signature | String | 是 | 请求签名,用来验证此次请求的合法性,需要用户根据实际的输入参数计算得出。具体计算方法参见接口鉴权文档。 |
Version | String | 是 | 操作的 API 的版本。取值参考接口文档中入参公共参数 Version 的说明。例如云服务器的版本 2017-03-12。 |
SignatureMethod | String | 否 | 签名方式,目前支持 HmacSHA256 和 HmacSHA1。只有指定此参数为 HmacSHA256 时,才使用 HmacSHA256 算法验证签名,其他情况均使用 HmacSHA1 验证签名。 |
Token | String | 否 | 临时证书所用的 Token ,需要结合临时密钥一起使用。临时密钥和 Token 需要到访问管理服务调用接口获取。长期密钥不需要 Token 。 |
DetectAuth(实名核身鉴权)
在使用人脸核身之前需要:先调用本接口获取BizToken,用来串联核身流程,在验证完成后,用于获取验证结果信息。
GetDetectInfo(获取实名核身结果信息)
为了获取用户的验证信息,是否通过。如果通过可以指定拉取的结果信息,取值(0:全部;1:文本类;2:身份证正反面;3:视频最佳截图照片;4:视频)
三、基本接口说明使用
DetectAuth(实名核身鉴权)
输入参数
这里我们就只要一些基础信息就可以完成集成,如果有其它需求请根据参数再传递即可。
这里我们就只用一些它的必传参数,还有一个回调地址即可。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:DetectAuth。 |
Version | 是 | String | 公共参数,本接口取值:2018-03-01。 |
Region | 是 | String | 公共参数,详见产品支持的 地域列表。 |
RuleId | 是 | String | 用于细分客户使用场景,申请开通服务后,可以在腾讯云慧眼人脸核身控制台(https://console.cloud.tencent.com/faceid) 自助接入里面创建,审核通过后即可调用。如有疑问,请加慧眼小助手微信(faceid001)进行咨询。 |
TerminalType | 否 | String | 本接口不需要传递此参数。 |
IdCard | 否 | String | 身份标识(未使用OCR服务时,必须传入)。 规则:a-zA-Z0-9组合。最长长度32位。 |
Name | 否 | String | 姓名。(未使用OCR服务时,必须传入)最长长度32位。中文请使用UTF-8编码。 |
RedirectUrl | 否 | String | 认证结束后重定向的回调链接地址。最长长度1024位。 |
Extra | 否 | String | 透传字段,在获取验证结果时返回。 |
ImageBase64 | 否 | String | 用于人脸比对的照片,图片的BASE64值; BASE64编码后的图片数据大小不超过3M,仅支持jpg、png格式。 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
Url | String | 用于发起核身流程的URL,仅微信H5场景使用。 |
BizToken | String | 一次核身流程的标识,有效时间为7,200秒; 完成核身后,可用该标识获取验证结果信息。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
GetDetectInfo(获取实名核身结果信息)
输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:GetDetectInfo。 |
Version | 是 | String | 公共参数,本接口取值:2018-03-01。 |
Region | 是 | String | 公共参数,详见产品支持的 地域列表。 |
BizToken | 是 | String | 人脸核身流程的标识,调用DetectAuth接口时生成。 |
RuleId | 是 | String | 用于细分客户使用场景,申请开通服务后,可以在腾讯云慧眼人脸核身控制台(https://console.cloud.tencent.com/faceid) 自助接入里面创建,审核通过后即可调用。如有疑问,请加慧眼小助手微信(faceid001)进行咨询。 |
InfoType | 否 | String | 指定拉取的结果信息,取值(0:全部;1:文本类;2:身份证正反面;3:视频最佳截图照片;4:视频)。 如 134表示拉取文本类、视频最佳截图照片、视频。 默认值:0 |
输出参数
参数名称 | 类型 | 描述 |
---|---|---|
DetectInfo | String | JSON字符串。 { // 文本类信息 “Text”: { “ErrCode”: null, // 本次核身最终结果。0为成功 “ErrMsg”: null, // 本次核身最终结果信息描述。 “IdCard”: “”, // 本次核身最终获得的身份证号。 “Name”: “”, // 本次核身最终获得的姓名。 “OcrNation”: null, // ocr阶段获取的民族 “OcrAddress”: null, // ocr阶段获取的地址 “OcrBirth”: null, // ocr阶段获取的出生信息 “OcrAuthority”: null, // ocr阶段获取的证件签发机关 “OcrValidDate”: null, // ocr阶段获取的证件有效期 “OcrName”: null, // ocr阶段获取的姓名 “OcrIdCard”: null, // ocr阶段获取的身份证号 “OcrGender”: null, // ocr阶段获取的性别 “LiveStatus”: null, // 活体检测阶段的错误码。0为成功 “LiveMsg”: null, // 活体检测阶段的错误信息 “Comparestatus”: null,// 一比一阶段的错误码。0为成功 “Comparemsg”: null, // 一比一阶段的错误信息 “Location”: null, // 地理位置信息 “Extra”: “”, // DetectAuth结果传进来的Extra信息 “Detail”: { // 活体一比一信息详情 “LivenessData”: [] } }, // 身份证正反面照片Base64 “IdCardData”: { “OcrFront”: null, “OcrBack”: null }, // 视频最佳帧截图Base64 “BestFrame”: { “BestFrame”: null }, // 活体视频Base64 “VideoData”: { “LivenessVideo”: null } } |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
四、开发工具类
maven导包
<!-- 腾讯人脸核身--><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.0.112</version></dependency>
常量管理
/*** 人脸核身相关参数*/public static final String FACEKERNEL_SECRETID = "标识身份的 SecretId |";public static final String FACEKERNEL_SECRETKEY = "标识身份的SecretKey ,SecretKey 会用来生成请求签名 Signature。 ";public static final Object FACEKERNEL_RULEID = "用于调用配置的业务流程";
代码
import com.jeesite.common.collect.MapUtils;
import com.jeesite.common.mapper.JsonMapper;
import com.jeespring.common.constant.TencentFaceConstant;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.faceid.v20180301.FaceidClient;
import com.tencentcloudapi.faceid.v20180301.models.DetectAuthRequest;
import com.tencentcloudapi.faceid.v20180301.models.DetectAuthResponse;
import com.tencentcloudapi.faceid.v20180301.models.GetDetectInfoRequest;
import com.tencentcloudapi.faceid.v20180301.models.GetDetectInfoResponse;import java.util.Map;/*** 人脸识别工具类*/
public class RealNameAuthUtils {/*** 获取实名核身鉴权结果* @param redirectUrl 认证结束后重定向的回调链接地址。最长长度1024位* @return*/public static String getDetectAuthResult(String redirectUrl){String result = "";try{//用户验证 id和对应密钥Credential cred = new Credential(TencentFaceConstant.FACEKERNEL_SECRETID, TencentFaceConstant.FACEKERNEL_SECRETKEY);HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("faceid.ap-chengdu.tencentcloudapi.com");ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);//设置前置信息,如用户验证信息,地域信息(越近越快),请求域名地址FaceidClient client = new FaceidClient(cred, "ap-chengdu", clientProfile);Map<String,Object> paramMap = MapUtils.newHashMap();//paramMap.put("RedirectUrl",Constant.FACEKERNEL_REDIRECTURL);//设置了一个回调地址链接paramMap.put("RedirectUrl",redirectUrl);paramMap.put("RuleId", TencentFaceConstant.FACEKERNEL_RULEID);String params = JsonMapper.toJson(paramMap);DetectAuthRequest req = DetectAuthRequest.fromJsonString(params, DetectAuthRequest.class);DetectAuthResponse resp = client.DetectAuth(req);result = DetectAuthRequest.toJsonString(resp);System.out.println(result);} catch (TencentCloudSDKException e) {System.out.println(e.toString());result = "error";}return result;}/*** 获取实名核身结果信息* @param bizToken* @return*/public static String getDetectInfo(String bizToken){String result = "";try{Credential cred = new Credential(TencentFaceConstant.FACEKERNEL_SECRETID, TencentFaceConstant.FACEKERNEL_SECRETKEY);HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("faceid.ap-chengdu.tencentcloudapi.com");ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);FaceidClient client = new FaceidClient(cred, "ap-chengdu", clientProfile);Map<String,Object> paramMap = MapUtils.newHashMap();paramMap.put("BizToken",bizToken);paramMap.put("RuleId", TencentFaceConstant.FACEKERNEL_RULEID);String params =JsonMapper.toJson(paramMap);GetDetectInfoRequest req = GetDetectInfoRequest.fromJsonString(params, GetDetectInfoRequest.class);GetDetectInfoResponse resp = client.GetDetectInfo(req);result = GetDetectInfoRequest.toJsonString(resp);System.out.println(result);} catch (TencentCloudSDKException e) {System.out.println(e.toString());result = "error";}return result;}
}
微信小程序人脸核身---快速入门到实战(附开发工具类,复制即用)相关推荐
- 人脸核身 微信h5_微信小程序人脸核身---快速入门到实战(附开发工具类,复制即用)...
这里咱们使用腾讯云的人脸核身来给你们作一个基础的介绍和使用java 1.基本介绍 1.概述 人脸核身:通常是对一组对用户身份信息真实性进行验证审核的服务套件提供各种认证功能模块,包含证件 OCR 识别 ...
- 微信小程序(1)——注册开发者账号、安装开发工具
注册开发者账号 1.需要先注册一个微信公众号,注册入口为:https://mp.weixin.qq.com 2.进入公众号找到左侧最下方的开发-基本配置,申请开通开发者 3.开通后可以看到开发者ID ...
- 【微信小程序创作之路】-入门
[微信小程序创作之路]-入门 第一章 微信小程序历史.简介.开启创作之路 文章目录 [微信小程序创作之路]-入门 前言 一.小程序的简介 二.小程序的历史 三.小程序优势 1.使用门槛低 2.快速开发 ...
- php刷脸登录,PHP实现微信小程序人脸识别刷脸登录功能
首先我们先确认我们的百度云人脸库里已经上传了我们的个人信息照片 关注cs代写,有帮助! 然后我们在后台写刷脸登陆的接口login我们要把拍照获取的照片存储到服务器 public function l ...
- [小记] 微信小程序 - 人脸识别前端(一)初体验
微信小程序 - 人脸识别前端(一)初体验 记录尝试使用拍照模式进行人脸比对的过程-此方式有一定缺陷:调用系统摄像头,会保留照片于系统相册等 功能:人脸识别 + 打卡签到 说明:前端仅做拍照和转码操作等 ...
- 微信小程序人脸识别/采集改进版-支持人脸中心位置校验,人脸图片采集(速度更快),人脸搜索
目录 1. 微信小程序人脸识别 1. 初始化人脸识别 2. 创建 camera 上下文 CameraContext 对象 3.获取 Camera 实时帧数据 4.人脸识别,使用前需要通过 wx.ini ...
- 【微信小程序控制硬件15 】 开源一个微信小程序,支持蓝牙快速配网+WiFi双控制ESP32-C3应用示范;(附带Demo)
文章目录 一.前言 二. Blufi乐鑫自研的蓝牙配网协议 ESP32 配网流程 流程图 三.相关代码 3.1 蓝牙快速配网 3.2 蓝牙本地控制 2.3 外设驱动 3.1 蓝牙搜索 3.2 蓝牙服务 ...
- 微信小程序 - 人脸识别前端(二)拍照方式优化
微信小程序 - 人脸识别前端(二)拍照方式优化 前文提及的识别方式较 low ,另外会留下识别痕迹,此处使用 <camera>组件进行优化. 前文地址:前文 参考文章:zhoujie-人脸 ...
- 小程序加入人脸识别_微信小程序 人脸识别登陆模块
微信小程序---人脸识别登陆的实现 关键词:微信小程序 人脸识别 百度云接口 前言 这是一篇关于一个原创微信小程序开发过程的原创文章.涉及到的核心技术是微信小程序开发方法和百度云人脸识别接口.小程序的 ...
最新文章
- 百度发的208亿春晚红包,靠这样的技术送到了你手上 | 解读
- mysql5.6允许远程连接_mysql允许远程连接的方法
- JBPM流程部署校验之java利用XSD校验XML
- (原創) 深入探討blocking與nonblocking (SOC) (Verilog)
- R语言问题剖析20篇(一)-R语言泛函式编程purrr实现优雅循环迭代
- 阿里巴巴云原生的 2020,注定不凡的一年
- 如何使用be动词来确认请求_12
- ActiveMQ 即时通讯服务 浅析
- sql 不同数据库同步数据_什么是SQL数据同步
- 比较nio大体上优于io的方面
- 【java笔记】包装类
- gin框架的学习--golang
- 信号检测与估计理论pdf
- 产品-Axure9英文版,使用DynamicPanel动态面板制作循环、自动滚动列表
- ZeroMQ XPub/XSub模式
- 标准盒子模型和怪异盒子模型
- 描述计算机内的存储单位及换算关系,计算机存储单位换算
- 《Photoshop修色圣典(第5版)》—第1章1.10节何时两种效果最佳
- centos8 U盘制作及安装
- 第一次使用Maven,新建Maven项目时更新出错出现Unable to update maven configuration following project...
热门文章
- DDR4的特性与电气参数
- iOS开发笔记:大小写敏感的iOS文件系统,而iOS模拟器对大小写不敏感
- iOS 几种常用的 crash log 崩溃信息调试方法. (转载)
- swoole开启了守护进程如何关掉
- 华为ensp模拟器设备启动失败解决合集
- 电子电路中,PVDD、CVDD、VPP、 VDD、 AVDD、VCC分别是指什么电源?各起什么作用?
- 分清概念十分重要系列之--关于GPS,你需要了解这些
- Arm居然为Cortex-M发布了专属显卡驱动!
- springboot 单元测试使用 @value读取不到值, yml的两个坑
- Activity xxxxx does not have a NavController set on xxxx