导语
腾讯云慧眼人脸核身(原金融级身份认证升级版)是一组对用户身份信息真实性进行验证审核的服务套件,提供各类认证功能模块,包含证件 OCR 识别、活体检测、人脸1:1对比等能力,以解决行业内大量对用户身份信息核实的需求,广泛应用于金融、运营商、共享出行等领域。
腾讯云慧眼人脸核身提供身份证 OCR、活体检测、1:1人脸比对的配套服务,引擎能力领先,并且可根据需求灵活组合。
腾讯云慧眼人脸核身的活体人脸核身提供 API 接口PAAS服务和SaaS 服务两种方式。SaaS 服务支持:微信公众号 H5、微信小程序、App sdk、H5、PC web的渠道接入。如果是微信原生H5浮层模式或者微信小程序,想要接入SAAS服务,需要符合一定的资质条件,用于微信侧审核。由于资质门槛较高,笔者并没有满足条件的公众号和小程序,因此只能使用另一种大众模式——微信普通H5。这种模式下,只要是公众号都可以接入SAAS服务。
笔者注册的公众号是未认证的个人订阅号,以此作为demo,利用NodeJS部署后端服务,给大家详细介绍如何接入人脸核身的SAAS服务。最终实现的效果为:点击公众号下方菜单中的“静默活体”,跳转进入人脸核身SAAS服务,完成核身后回调到腾讯云人脸核身产品官网首页。(此处可以放一个流程图&四张图片组合)
下面介绍详细的服务部署流程。
前置准备
1.公众号
2.腾讯云CVM云服务器:标准型S5 1核2G CentOS 8.0
上述准备大家自行完成,都较为基础和简单。
详细步骤
一、人脸核身控制台普通H5接入配置
开通人脸核身服务后,进入到人脸核身控制台,在“自助接入”中选择“微信H5/小程序服务”,点击“创建业务流程”:
选择“微信H5(普通模式)”,输入微信公众号名称:
输入“页面标题”,“业务名称”,“业务描述”字段内容:
选择比对库源,本文选择“跟公安权威库比对”:
选择身份信息传入方式,根据用户的选择,在页面最下方会明确提示,调用“实名核身鉴权”时是否传入姓名和身份证号:
选择活体检测方式:
配置结果页面的提示文案:
最后,确认业务配置流程,并提交审核:
审核通过后,我们就可以利用此次生成的RuleID进行SAAS服务调用了。
二、搭建服务端Express框架环境
登录云服务器,切换到root用户,安装node运行环境:
代码语言:txt复制yum install nodejs
验证node安装是否成功:
代码语言:txt复制node -v
安装Express框架:
代码语言:txt复制npm install express-generator -g
使用-h选项显示express的命令选项:
代码语言:txt复制express -h
在当前工作目录下创建名为generalH5的Express应用程序
代码语言:txt复制express --view=pug generalH5
安装依赖项:
代码语言:txt复制cd generalH5
npm install
至此,完成Express框架的搭建,可直接运行:
代码语言:txt复制npm start
此时默认会在3000端口开启服务,访问"{云服务器IP}:3000",即可看到Express默认首页:
三、微信公众号开发者模式
1. 登录公众号的管理后台,选择左侧的“开发”下的“开发者工具”。此处重点关注:
- “开发者文档”:基于微信平台进行二次开发的文档说明。
- “在线接口调试工具”:http请求发送工具,免除安装postman等工具的麻烦。
- “公众平台测试账号”:拥有所有高级权限的测试账号。
2. 进入“公众平台测试账号”,在“测试号信息”下,记录appID和appsecret。同时,找到“测试二维码”,利用微信扫描关注该账号。接下来的操作都是对该测试号的更改和配置。
3. 进入“在线接口调试工具”,完成测试号底部菜单栏的设置:
- 利用“基础支持”中的“获取access_token接口”,传入appid和appsecret,完成access_token的获取。所有的接口请求都要利用该access_token值,完成接口鉴权。
- 利用“自定义菜单”中的“自定义菜单创建接口”,传入access_token和body内容,完成底部菜单栏的配置。
其中的body内容,参考“开发者文档”中的“自定义菜单”->“创建接口”完成,url设置为部署Express应用程序的{服务器IP地址}:{端口号}/{接口路径},具体json如下:
代码语言:javascript复制{
"button": [
{
"name": "人脸核身",
"sub_button": [
{
"type": "view",
"name": "静默活体",
"url": "http://{服务器IP地址}:{端口号}/{接口路径}"
}
]
}
]
}
四、服务端逻辑开发
服务端逻辑开发主要利用人脸核身SAAS服务的“实名核身鉴权”接口,根据文档填写入参(本例中并不需要填写IdCard和Name,必填RuleId)。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
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格式。请使用标准的Base64编码方式(带=补位),编码规范参考RFC4648。 |
接口成功调用后,有三个关键出参,其中的Url就是我们需要跳转过去的核身页面:
参数名称 | 类型 | 描述 |
---|---|---|
Url | String | 用于发起核身流程的URL,仅微信H5场景使用。 |
BizToken | String | 一次核身流程的标识,有效时间为7,200秒; 完成核身后,可用该标识获取验证结果信息。 |
RequestId | String | 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 |
介绍完使用的主要接口,接下来,利用Express框架,完成后端服务接口http://81.xx.xx.xx:3000/faceid的逻辑开发。根据框架设计,主要修改routes目录下的index.js即可。
首先,安装腾讯云的NodeJS SDK,用于接口鉴权和调用,切换到generalH5目录下,执行:
代码语言:txt复制npm install tencentcloud-sdk-nodejs --save
其次,调用DetectAuth接口,获取biztoken和静默活体服务的url,可以利用API 3.0 Explorer工具生成的代码:
最后,将在/router/index.js中添加调用DetecAuth接口的代码,完成整体逻辑,具体代码如下:
代码语言:txt复制var express = require('express');
var router = express.Router();
const tencentcloud = require("tencentcloud-sdk-nodejs");
const FaceidClient = tencentcloud.faceid.v20180301.Client;
/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index', { title: 'Express' });
});
// faceid接口逻辑,调用实名核身鉴权DetectAuth接口
router.get('/faceid', function (req, res) {
const clientConfig = {
credential: {
secretId: "xxx",//替换成自己的secrecId
secretKey: "xxx",//替换成自己的secretKey
},
region: "ap-guangzhou",
profile: {
httpProfile: {
endpoint: "faceid.tencentcloudapi.com",
},
},
};
const client = new FaceidClient(clientConfig);
const params = {
"RuleId": "0",
"RedirectUrl": "http://cloud.tencent.com"//这里一定要带有http://头部
};
client.DetectAuth(params).then(
(data) => {
console.log(data);
console.log(data.Url);
res.redirect(data.Url);//跳转到DetectAuth接口返回的Url,完成人脸核身
},
(err) => {
console.error("error", err);
res.send(err);
}
);
});
module.exports = router;
至此,整体服务搭建完毕,在服务器后台generalH5再次启动服务,即大功告成:
代码语言:txt复制npm start
总结
微信普通H5接入人脸核身SAAS服务,一共包括微信公众号使用、人脸核身SAAS接口、Express框架部署等三方面内容。涉及的面较非常广,本文只是将搭建过程进行了展示,如果大家对上述三个方面有更高的要求,都可以深入去了解学习,每一块都包含很深的技术知识。