
腾讯云慧眼人脸核身(原金融级身份认证升级版)是一组对用户身份信息真实性进行验证审核的服务套件,提供各类认证功能模块,包含证件 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(普通模式)”,输入微信公众号名称:

输入“页面标题”,“业务名称”,“业务描述”字段内容:

选择比对库源,本文选择“跟公安权威库比对”:

选择身份信息传入方式,根据用户的选择,在页面最下方会明确提示,调用“实名核身鉴权”时是否传入姓名和身份证号:

选择活体检测方式:

配置结果页面的提示文案:

最后,确认业务配置流程,并提交审核:

审核通过后,我们就可以利用此次生成的RuleID进行SAAS服务调用了。

登录云服务器,切换到root用户,安装node运行环境:
yum install nodejs验证node安装是否成功:
node -v安装Express框架:
npm install express-generator -g使用-h选项显示express的命令选项:
express -h在当前工作目录下创建名为generalH5的Express应用程序
express --view=pug generalH5安装依赖项:
cd generalH5
npm install至此,完成Express框架的搭建,可直接运行:
npm start此时默认会在3000端口开启服务,访问"{云服务器IP}:3000",即可看到Express默认首页:

1. 登录公众号的管理后台,选择左侧的“开发”下的“开发者工具”。此处重点关注:

2. 进入“公众平台测试账号”,在“测试号信息”下,记录appID和appsecret。同时,找到“测试二维码”,利用微信扫描关注该账号。接下来的操作都是对该测试号的更改和配置。

3. 进入“在线接口调试工具”,完成测试号底部菜单栏的设置:


其中的body内容,参考“开发者文档”中的“自定义菜单”->“创建接口”完成,url设置为部署Express应用程序的{服务器IP地址}:{端口号}/{接口路径},具体json如下:
{
    "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目录下,执行:
npm install tencentcloud-sdk-nodejs --save其次,调用DetectAuth接口,获取biztoken和静默活体服务的url,可以利用API 3.0 Explorer工具生成的代码:

最后,将在/router/index.js中添加调用DetecAuth接口的代码,完成整体逻辑,具体代码如下:
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再次启动服务,即大功告成:
npm start微信普通H5接入人脸核身SAAS服务,一共包括微信公众号使用、人脸核身SAAS接口、Express框架部署等三方面内容。涉及的面较非常广,本文只是将搭建过程进行了展示,如果大家对上述三个方面有更高的要求,都可以深入去了解学习,每一块都包含很深的技术知识。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。