微信小程序实现刷脸登录


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 相关文章推荐
JavaScript语言中的Literal Syntax特性分析
Mar 08 Javascript
javascript css float属性的特殊写法
Nov 13 Javascript
基于jquery的滑动样例代码
Nov 20 Javascript
js 代码优化点滴记录
Feb 19 Javascript
js中方法重载如何实现?以及函数的参数问题
Aug 01 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
Oct 10 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
Jan 26 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
Jun 25 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
Oct 25 Javascript
node.js express捕获全局异常的三种方法实例分析
Dec 27 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
php面向对象的方法重载两种版本比较
2008/09/08 PHP
php环境下利用session防止页面重复刷新的具体实现
2014/01/09 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
PHP超牛逼无限极分类生成树方法
2015/05/11 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
js漂浮广告实现代码
2015/08/15 Javascript
深入理解Javascript中的观察者模式
2017/02/20 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
浅谈vue引入css,less遇到的坑和解决方法
2018/01/20 Javascript
react native 文字轮播的实现示例
2018/07/27 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
基于pandas数据样本行列选取的方法
2018/04/20 Python
Python装饰器原理与用法分析
2018/04/30 Python
Python 下载及安装详细步骤
2019/11/04 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
高级技校毕业生自荐信
2013/11/18 职场文书
在校学生职业规划范文
2014/01/08 职场文书
装修协议书范本
2014/04/21 职场文书
小学数学教学随笔
2015/08/14 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript