微信普通H5接入腾讯云慧眼活体人脸核身SAAS服务

2020-11-10 17:36:47 浏览数 (1)

导语

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

Express框架搭建后的默认首页Express框架搭建后的默认首页

三、微信公众号开发者模式

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

  • “开发者文档”:基于微信平台进行二次开发的文档说明。
  • “在线接口调试工具”:http请求发送工具,免除安装postman等工具的麻烦。
  • “公众平台测试账号”:拥有所有高级权限的测试账号。

公众号开发者工具公众号开发者工具

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

测试号管理中的关键信息测试号管理中的关键信息

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

  • 利用“基础支持”中的“获取access_token接口”,传入appid和appsecret,完成access_token的获取。所有的接口请求都要利用该access_token值,完成接口鉴权。
调用“获取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即可。

Express框架的目录结构Express框架的目录结构

首先,安装腾讯云的NodeJS SDK,用于接口鉴权和调用,切换到generalH5目录下,执行:

代码语言:txt复制
npm install tencentcloud-sdk-nodejs --save

其次,调用DetectAuth接口,获取biztoken和静默活体服务的url,可以利用API 3.0 Explorer工具生成的代码:

DetectAuth接口调用DetectAuth接口调用

最后,将在/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框架部署等三方面内容。涉及的面较非常广,本文只是将搭建过程进行了展示,如果大家对上述三个方面有更高的要求,都可以深入去了解学习,每一块都包含很深的技术知识。

0 人点赞