微信小程序实现刷脸登录


Posted in Javascript onMay 25, 2018

微信小程序本身并不具有刷脸登录的功能,实现时需要借助百度云的人脸识别的sdk,当然现在百度云是暂时免费的,我们可以登录自行下载使用。

下载地址

后台代码我们使用thinkPHP框架实现,将下载好的sdk导入thinkPHP框架中,就可以写方法使用了。

我们需要将图片上传到自己服务器和百度云人脸库中。

public function login(){ 
    $dir="./***";//自己定义的文件名 
    if(!file_exists($dir)){ 
      mkdir($dir,0777,true); 
    } 
    $upload = new \Think\Upload();// 实例化上传类 
    $upload->maxSize = 3145728 ;// 设置附件上传大小 
    $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型 
    $upload->rootPath = $dir; // 设置附件上传根目录 
    $upload->savepath=''; 
    // 上传单个文件 
    $info = $upload->uploadOne($_FILES['file']); 
    if(!$info) {// 上传错误提示错误信息 
      return $this->ajaxReturn(array('error'=>true,'msg'=>$upload->getError())); 
    }else{// 上传成功 获取上传文件信息 
      $file = $dir . $info['savepath'] . $info['savename']; 
      $image = base64_encode(file_get_contents($file)); 
      $client = $this->init_face(); 
      $options['liveness_control']='NORMAL'; 
      $options['max_user_num']='1'; 
      $ret = $client->search($image,'BASE64',$this->face_group(),$options); 
 
      if($ret['error_code']==0){ 
        $user = $ret['result']['user_list'][0]; 
        $no = $user['user_id']; 
        $score = $user['score']; 
 
        if(!empty($no)){ 
          $data = M('student')->field('no,name,sex')->where("no='{$no}'")->find(); 
 
          if($data){ 
            //查到此学号 
            $data['score'] = $score; 
            echo json_encode($data,JSON_UNESCAPED_UNICODE); 
          }else{ 
            //本地库不存在此学号 
            echo "本地数据库没有该学生,百度云库信息:个人信息:{$no},分值:{$score}"; 
          } 
 
        } 
 
      }else{ 
        echo "活体检测失败,".json_encode($ret,JSON_UNESCAPED_UNICODE); 
      } 
    } 
}

里面的search方法是sdk的方法

public function search($image, $imageType, $groupIdList, $options=array()){ 
 
    $data = array(); 
     
    $data['image'] = $image; 
    $data['image_type'] = $imageType; 
    $data['group_id_list'] = $groupIdList; 
 
    $data = array_merge($data, $options); 
    return $this->request($this->searchUrl, json_encode($data), array( 
      'Content-Type' => 'application/json', 
    )); 
}

前三个参数是必填的,后面参数根据自己的实际情况选即可。

微信小程序中需要使用camera组件以及wx.createCameraContext()方法,之后在js调用后台代码即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
xheditor与validate插件冲突的解决方案
Apr 15 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
Jan 04 Javascript
javascript动态加载二
Aug 22 Javascript
JavaScript动态插入script的基本思路及实现函数
Nov 11 Javascript
js 触发select onchange事件代码
Mar 20 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
Aug 01 Javascript
AngularJS基础 ng-src 指令简单示例
Aug 03 Javascript
JavaScript装饰器函数(Decorator)实例详解
Mar 30 Javascript
使用vue-router在Vue页面之间传递数据的方法
Jul 15 Javascript
vue中input的v-model清空操作
Sep 06 Javascript
在js中修改html body的样式
Nov 11 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
May 25 #Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
May 25 #Javascript
JS简单生成由字母数字组合随机字符串示例
May 25 #Javascript
Webpack中雪碧图插件使用详解
May 25 #Javascript
使用javascript做在线算法编程
May 25 #Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 #Javascript
浅析node.js的模块加载机制
May 25 #Javascript
You might like
来自phpguru得Php Cache类源码
2010/04/15 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
php打开远程文件的方法和风险及解决方法
2013/11/12 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
angular select 默认值设置方法
2017/06/23 Javascript
vuejs使用递归组件实现树形目录的方法
2017/09/30 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
vue中全局路由守卫中替代this操作(this.$store/this.$vux)
2020/07/24 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
详解Python中的Descriptor描述符类
2016/06/14 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
Python中Qslider控件实操详解
2021/02/20 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
2012/03/14 面试题
四年级语文教学反思
2014/02/05 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
我的1919观后感
2015/06/03 职场文书
永远是春天观后感
2015/06/12 职场文书
同学聚会祝酒词
2015/08/10 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android