微信小程序实现人脸识别注册登录

article/2025/3/20 4:18:35

前言

这是一篇关于一个原创微信小程序开发过程的原创文章。涉及到的核心技术是微信小程序开发方法和百度云人脸识别接口。小程序的主体是一个用于个人密码存储的密码管理器,在登陆注册阶段,需要调用百度云人脸识别接口以及百度云在线人脸库的管理接口。本文主要涉及登陆注册模块的实现,而且不需要PHP后台代码,完全在线调用接口实现,希望后来的你能有所收获!

步骤 

步骤涉及接口(百度云)
拍摄或者相册选择 并 上传比对样本照片到 人脸库人脸库管理接口(main:人脸注册)
拍摄照片并上传,云服务器在线比对 人脸库照片与上传图片的相似度人脸识别接口
获取返回结果(相似度)人脸识别接口

开发过程

1.拍摄人脸图片上传至人脸库---注册

准备工作:需要在百度云注册(或者直接用百度云盘app扫码登陆),并创建人脸识别的应用。(完全免费)

具体如下:

百度云:https://cloud.baidu.com/

注册完成后(或者直接扫码登陆),进入管理控制台->产品服务->人工智能->人脸识别->创建应用->填写必要信息->立即创建

至此,我们已经创建好了人脸识别的应用。接下来,进入应用列表,找到我们才新建的应用,查看人脸库,我们需要创建用户组(用来集中管理小程序的用户人脸照片)

新建组(id不要太复杂,后面还要用的。)

至此,我们已经完成了在云上的所有必要操作。下面,我们在小程序中,拍照上传即可。

拍照上传

需要在pages中新建一个目录,用来承载我们的登陆注册模块。就假定为 camera{camera.js camera.wxml camera.wxss camera.json}

主要文件自然是 *.wxml 和 *.js 了。

camera.wxml

 

<!-- camera.wxml相机大小需要从重新设置 -->
<camera device-position="front" flash="off" binderror="error"  style="width:100%;height:400px;"></camera> 
<!-- 需要使用 button 来授权登录 -->
<button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo" type="primary">授权
</button>
<view wx:else>请升级微信版本</view> 
<!-- 拍照按钮 -->
<button type="primary" bindtap="takePhoto"> 拍照 </button> 
<button bindtap='btnreg'> 注册须知 </button>

 

camera.js

调用wxAPI takePhoto() 拍照并获取src -> wx.request() 访问百度云 用先前创建的应用的API Key & Screct Key 获取 access_token ->wx.request() 访问百度云 上传 所拍照片(要经过base64编码)详情可参考小程序API文档 以及 百度云API文档(接口以及于18年升级至v3)

 

// camera.js
const app = getApp()
Page({data: {canIUse: wx.canIUse('button.open-type.getUserInfo'),nickName: "",src: "",//图片的链接baidutoken: "",base64: "",msg: ""},//拍照takePhoto() {var that = this;//拍照const ctx = wx.createCameraContext()ctx.takePhoto({quality: 'high',success: (res) => {this.setData({src: res.tempImagePath//获取图片})//图片base64编码wx.getFileSystemManager().readFile({filePath: this.data.src, //选择图片返回的相对路径encoding: 'base64', //编码格式success: res => { //成功的回调this.setData({base64: res.data})}})this.getBaiduToken();}//拍照成功结束})//调用相机结束//失败尝试wx.showToast({title: '请重试',icon: 'loading',duration: 500})},error(e) {console.log(e.detail)},getBaiduToken:function(){var that=this;//acess_token获取,qs:需要多次尝试wx.request({url: 'https://aip.baidubce.com/oauth/2.0/token', //是真实的接口地址data: {grant_type: 'client_credentials',client_id: 'xxx',//用你创建的应用的API Keyclient_secret: 'xx'//用你创建的应用的Secret Key},header: {'Content-Type': 'application/json' // 默认值},success(res) {that.setData({baidutoken: res.data.access_token//获取到token})that.uploadPhoto();}})},uploadPhoto:function(){var that=this;//上传人脸进行注册-----testwx.request({url: 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=' + this.data.baidutoken,method: 'POST',data: {image: this.data.base64,image_type: 'BASE64',group_id: 'tingdemo',//自己建的用户组iduser_id: 'ting'//这里获取用户昵称},header: {'Content-Type': 'application/json' // 默认值},success(res) {     that.setData({msg: res.data.error_msg})console.log(that.data.msg)      //做成功判断if (that.data.msg == 'SUCCESS') {//微信js字符串请使用单引号wx.showToast({title: '注册成功',icon: 'success',duration: 2000})wx.switchTab({url: '../UI/ui',})}}})},//获取用户信息bindGetUserInfo: function (e) {this.setData({nickName: e.detail.userInfo.nickName})debugger;wx.showToast({title: '授权成功',icon: 'success',duration: 1000})},//先授权登陆,再拍照注册btnreg: function () {wx.showModal({title: '注册须知',content: '先授权登陆,再拍照注册哦!网络可能故障,如果不成功,请再试一下!',})}
})

 

这里要多试几次,我以为可能由于网络的问题,会调用失败, 但其实是wx.request()是并发的,所以获取access_token和上传请求会冲突(可能没有获取到access_token就上传,会发生错误)。

另外,要开启微信小程序 IDE 的 不校验合法域名的选项(设置->项目设置 -> 勾选 不校验......)

至此,注册 就完成了(即获取用户昵称、拍照、上传人脸库注册。)

2.拍照上传在线人脸识别---登陆

找到指定用户组中与上传照片最相似的人脸并返回,比对结果。

我们仍然需要再建立一个页面来承载我们的登陆相关操作。就假定为 camera2

<!--pages/Camera/verifyphoto.wxml-->
<!-- verifyphoto.wxml相 -->
<camera device-position="front" flash="off" binderror="error"  class="camera"></camera>
<!-- 拍照按钮 -->
<button type="primary" bindtap="takePhoto"> 识别 </button>

 

Page({data: {src:'',base64: "",baidutoken: "",msg: null},//拍照并编码takePhoto() {var that=this;//拍照const ctx = wx.createCameraContext()ctx.takePhoto({quality: 'high',success: (res) => {that.setData({src: res.tempImagePath})//图片base64编码wx.getFileSystemManager().readFile({filePath: that.data.src, //选择图片返回的相对路径encoding: 'base64', //编码格式success: res => { //成功的回调          that.setData({base64: res.data})that.checkPhoto();}})}})  wx.showToast({title: '请重试',icon: 'loading',duration: 500})},error(e) {console.log(e.detail)},checkPhoto: function () {var that=this;//acess_token获取wx.request({url: 'https://aip.baidubce.com/oauth/2.0/token', //真实的接口地址data: {grant_type: 'client_credentials',client_id: 'xx',client_secret: 'xx'//用自己的},header: {'Content-Type': 'application/json' // 默认值},success(res) {that.setData({baidutoken: res.data.access_token//获取到token})        that.validPhoto();}})},validPhoto:function(){var that = this;//上传人脸进行 比对wx.request({url: 'https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=' + that.data.baidutoken,method: 'POST',data: {image: this.data.base64,image_type: 'BASE64',group_id_list: 'tingdemo',//自己建的用户组id},header: {'Content-Type': 'application/json' // 默认值},success(res) {that.setData({msg: res.data.result.user_list[0].score})if (that.data.msg > 80) {wx.showToast({title: '验证通过',icon: 'success',duration: 1000})         //验证通过,跳转至UI页面wx.switchTab({url: '../UI/ui',})}}});}
})

至此,我们的登陆也搞定了。

实际用到的样式

.Top {position: absolute;top: 0rpx;width: 100%;bottom: 100rpx;
}
.csscamera {margin: 50rpx 5% 0 5%;padding: 5%;height: 70%;width: 80%;border: dashed 1rpx rgb(185, 185, 189);
}
.sumbit {position: absolute;bottom: 0rpx;height: 100rpx;width: 100%;
}

 

<view class="Top">
<camera device-position="front" flash="off" binderror="error" class="csscamera"></camera>
<!-- 拍照按钮 -->
<button type="primary" bindtap="takePhoto" class="sumbit"> 识别 </button> 
</view>

如果对你有帮助,请关注一下博主的小程序支持一下, 在此谢谢了


http://chatgpt.dhexx.cn/article/Sw4cjZbB.shtml

相关文章

C# Winform开发人脸识别小程序 (基于百度接口)

目录 一、设计思路1、背景2、简介3、用到的技术4、设计功能一&#xff1a;用户注册功能概述功能示意图时序图 功能二&#xff1a;人脸识别功能概述功能示意图时序图 二、实现1、环境准备2、百度接口配置3、技术准备4、代码实现功能一&#xff1a;用户注册功能二&#xff1a;人脸…

python人脸检测与微信小程序_微信小程序人脸识别功能

本文档以微信小程序为例&#xff0c;微信小程序开发人脸核身功能需要两个申请&#xff1a;腾讯云申请人脸识别服务和小程序申请人脸识别服务&#xff08;注意&#xff1a;只有符合以下条件的机构才能在小程序端申请&#xff09; 政务&#xff1a;政府机构或事业单位 金融&…

使用uniapp开发微信小程序的人脸采集功能/人脸识别功能

✅作者简介&#xff1a;大家好我是瓜子三百克&#xff0c;励志成为全栈工程师的一枚程序猿&#xff0c;也是喜欢在学习和开发中记录笔记的小白博主&#xff01; &#x1f4c3;个人主页&#xff1a;瓜子三百克的主页 &#x1f525;系列专栏&#xff1a;uniapp前端 &#x1f496;…

无需证书微信小程序实现人脸识别—E证通

E证通 前言收费标准接入准备小程序1、 添加服务器域名白名单2、添加业务域名白名单3、安装 SDK/小程序包4、SDK 调用步骤即实操代码4.1、初始化 SDK4.2、 调用 SDK 5、拿到回调结果6、使用uni-app开发6.1、小程序运行后&#xff0c;在小程序中丢入sdk包6.2、把sdk包转换成uni-a…

小程序实现人脸识别与小程序发布

文章目录 前言主要实现功能效果演示PC端手机端 调用百度Ai人脸检测接口小程序发布流程项目源码编程之外 前言 人脸识别其实没那么复杂&#xff0c;我国几个大厂都有他们的AI开放平台&#xff0c;调用一下他们的人脸检测接口就行了&#x1f601;&#xff08;虽然接口不是自己写的…

节假日查询接口,加班,补班,日期查询,放假,日历

一、接口介绍 通过本数据&#xff0c;可以查询节假日、加班日期&#xff0c;以及每个日期的对应的国际日和我国传统节日的简介。广泛使用于日程安排、证券投资、日历等功能的应用中展示。 二、使用案例截图 如何查看调用效果&#xff1f; 1、通过链接&#xff0c;点击【在线…

php中阿里云快递物流查询接口使用

php中阿里云快递物流查询接口使用 官方给的php代码如下&#xff1a; $host "https://ali-deliver.showapi.com";$path "/showapi_expInfo";$method "GET";$appcode "你自己的AppCode";$headers array();array_push($headers, &qu…

智能疾病查询接口

疾病类目&#xff0c;疾病症状&#xff0c;智能疾病查询&#xff0c;医疗知识图谱 ​ 一、接口介绍 最全的疾病大全&#xff0c;收集了数万种常见疾病&#xff0c;任何常见疾病都可查询。 二、功能体验 三、演示效果 四、API文档 4.1 查询疾病科目 4.1.1接入点说明 查询…

调用阿里API获取城市天气信息

目录 一&#xff0e;阿里云天气预报API接口介绍2.1阿里云天气预报API介绍2.2 调用API准备工作及认识 二&#xff0e;调用天气预报API三&#xff0e;代码实现四&#xff0e;结果展示五、问题与解决办法 赵继涛&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;20…

如何调用showapiRequest解决图片验证码识别?

一、思路&#xff08;我埋了一个坑&#xff09; &#xff08;1&#xff09;保存整张登录页面的图片 &#xff08;2&#xff09;剪切验证码区域的图片 &#xff08;3&#xff09;调用showapiRequest识别剪切好的图片 二、保存整张图片 保存当前页面的整张图片括号里面是保存图…

天气预报

到目前为止,我们的公众号已经可以回复用户发出的消息,但是如果仅仅如此,就没必要设为开发模式了。完全不懂编程的人也可以在微信公众平台上设置回复用户的消息。 现在我们来实现我们的公众号查询全国各个城市天气这么一个功能,像公众号输入天气+地名(天气南京)就可以查询…

天气预报查询数据接口、实时天气、未来24小时、7天/15天预报

小编在此向大家介绍拥有105亿调用量的产品&#xff0c;该接口文档清晰&#xff0c;对接方便&#xff0c;服务超好。 一、接口介绍 通过坐标区域、IP、地名、景点名称、电话区号或邮编等有效信息可查询天气情况&#xff08;天气状况、湿度、天气图标、实时温度、风向、风级、紫…

php如何调用天气预报api,PHP调用API接口实现天气查询功能的示例

php 的 PHP调用API接口实现天气查询功能的示例 天气预报查询接口API&#xff0c;在这里我使用的是国家气象局天气预报接口 使用较多的还有&#xff1a;新浪天气预报接口、百度天气预报接口、google天气接口、Yahoo天气接口等等。 1、查询方式 根据地名查询各城市天气情况 2.请求…

微信公众号开发_调用新闻查询接口_回复图文消息

文章目录 一、新闻API接口返回的Json示例实体类测试类测试 二、发送图文消息xml数据格式实体类创建自定义菜单处理点击事件查询新闻工具类 仓库代码地址关注微信公众号 发送效果&#xff1a; 一、新闻API接口 使用的是阿里云市场的服务 全国热门带正文新闻查询API接口 使用方式…

全国(全球)快递查询物流查询API,物流信息追踪接口

一、接口介绍 支持国内外1500快递物流公司的物流跟踪服务&#xff0c;包括顺丰、圆通、申通、中通、韵达等主流快递公司。同时&#xff0c;支持单号识别快递物流公司、按次与按单计费、物流轨迹返回等功能&#xff0c;以满足企业对快递物流查询多维度的需求。 二、使用案例截…

历史上的今天

一、接口介绍 看看历史上的今天&#xff0c;都发生了什么重大事件。查历史上的指定日期发生的事情&#xff0c;包括国家大事、国际大事、政府重要决策部署等图文详情内容&#xff0c;不断增加中。 二、使用示例截图 { "showapi_res_error": "", "sh…

3-性能测试知识面

脚本开发相关 根据不同协议&#xff0c;选择不同工具 协议 httpjdbcsoapwebsocketdubboMQ 工具 Jmeter「线程」loadrunner「进程、线程&#xff08;默认&#xff09;」wrkabngrinder「jpython、groovy」locust「协程」 扩展 Jmeter支持的语言&#xff1a; javapythonjythongroo…

天气预报查询数据接口、实时天气、24小时天气、未来24小时、7天/15天预报

小编在此向大家介绍拥有105亿调用量的产品&#xff0c;该接口文档清晰&#xff0c;对接方便&#xff0c;服务超好。 一、接口介绍 通过坐标区域、IP、地名、景点名称、电话区号或邮编等有效信息可查询天气情况&#xff08;天气状况、湿度、天气图标、实时温度、风向、风级、紫…

百度html的json解析,百度调用API返回json数据解析

在这里支队返回数据解析&#xff0c;不做请求数据​ &#xfeff;第一种格式json解析​ ​String jsonresult ”{"showapi_res_code":0,"showapi_res_error":"","showapi_res_body":{"list":[{"ct":"2016-02…

tp5 对接万维易源ISBN接口

首先购买万维易源的一元套餐 下面都有详细的说明 接口返回的数据格式是 {"showapi_res_error": "","showapi_res_code": 0,"showapi_res_id": "","showapi_res_body": {"datas": [{"series"…