微信小程序中实现人脸识别认证

前言
回顾2020年,最有意思的事情就是用微信小程序实现了人脸识别认证功能,期间也遇到一些问题。希望通过本文让大家了解在微信小程序中如何实现人脸识别认证功能以及如何解决遇到的问题。
一、开发准备
1、前提条件
目前微信小程序人脸识别接口(微信开放社区对其定义为 “微信人脸核身接口能力”)只对特定的主体及类目的小程序开放,详见 微信人脸核身接口能力
笔者使用的微信小程序主体类目为医疗,因此能申请该权限。
2、步骤及流程
根据 微信人脸核身接口能力文档介绍,申请接口权限的步骤及流程如下:

在这里插入图片描述
由于笔者使用的微信小程序已经接入了微信电子健康卡开放平台,故不用发送邮件申请,可以直接在开放平台的“小程序人脸识别申请”菜单中申请开通接口权限,如下图所示:
在这里插入图片描述
审核通过后,使用微信小程序账号登录微信公众平台,在“开发管理”—“接口设置”中添加人脸识别身份验证接口类目,如下图所示:
在这里插入图片描述

二、开始开发
1、小程序客户端
由于笔者希望在小程序的web-view组件的H5页面中调用小程序页面的人脸识别功能,故单独新建了一个页面wxfacialverify,在js的onLoad方法中接收H5传过来的参数,然后调用人脸识别接口。wxfacialverify.js代码如下:

Page({
   
  data: {
   
    faceCheckData:{
   },
  },
  onLoad: function (options) {
   
    var that = this;
    //页面加载调取人脸识别接口(原则上应该对options的携带的参数进行校验)
    that.facialRecognitionVerify(options);
  },
facialRecognitionVerify: function (faceCheckData) {
   
    wx.startFacialRecognitionVerify({
   
      name: faceCheckData.name,//姓名
      idCardNumber: faceCheckData.idCardNumber, //身份证号
      //人脸识别成功回调通知
      success (res) {
   
        var verifyResult = res.verifyResult;
        wx.request({
   
				  url: '/faceCheck/faceCheck.htm?action=faceIdentifyCheck', 
				  data: {
   'name':faceCheckData.name,'idCardNumber':faceCheckData.idCardNumber,
				  'verifyResult ':verifyResult
				   },
				  header: {
   
				    'content-type': 'application/json' 
				  },
				  success (res) {
   
				    console.log(res.data)
				  }
				})
      },
      //人脸识别失败的回调通知
      'fail&
  • 25
    点赞
  • 206
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
微信小程序可以通过调用微信开放平台提供的人脸识别接口来实现人脸识别功能。下面是一个简单的示例代码: 1. 在小程序引入wx.request函数,用于向后端发送请求。代码示例: ```javascript import wx from 'weixin-js-sdk'; wx.ready(function(){ // 在此处调用wx.request函数向后端发送请求,获取人脸识别结果 }) ``` 2. 后端接收小程序发送的请求,并进行人脸识别。代码示例: ```python import requests import base64 def face_detect(image): # 调用人脸识别API进行人脸检测 url = 'https://api-cn.faceplusplus.com/facepp/v3/detect' data = { 'api_key': 'your_api_key', 'api_secret': 'your_api_secret', 'image_base64': base64.b64encode(image).decode('utf-8'), 'return_attributes': 'gender,age,smiling,emotion' } response = requests.post(url, data=data) return response.json() ``` 在上述代码,我们使用Face++提供的人脸识别API进行人脸检测。需要将`your_api_key`和`your_api_secret`替换为自己在Face++官网申请的API Key和API Secret。 3. 在前端调用wx.chooseImage函数,用于选择要识别的图片。代码示例: ```javascript wx.chooseImage({ count: 1, // 只能选择一张图片 sizeType: ['compressed'], // 压缩图片 sourceType: ['album', 'camera'], // 可以从相册或相机选择图片 success: function (res) { var tempFilePaths = res.tempFilePaths; // 在此处调用wx.request函数向后端发送请求,获取人脸识别结果 } }) ``` 在上述代码,我们使用`wx.chooseImage`函数从相册或相机选择图片,并将选择的图片路径保存在`tempFilePaths`。 4. 在前端将选择的图片转换成Base64格式,并将Base64编码后的图片数据发送到后端进行人脸识别。代码示例: ```javascript wx.getFileSystemManager().readFile({ filePath: tempFilePaths[0], encoding: 'base64', success: function(res) { // 调用wx.request函数向后端发送请求,获取人脸识别结果 wx.request({ url: 'https://your_server.com/face_detect', method: 'POST', data: { image: res.data }, success: function(response) { console.log(response.data); } }) } }) ``` 在上述代码,我们使用`wx.getFileSystemManager().readFile`函数将选择的图片转换成Base64格式,并将Base64编码后的图片数据发送到后端进行人脸识别。需要将`https://your_server.com/face_detect`替换为自己的后端接口地址。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值