微信小程序和php的登录实现


Posted in PHP onApril 01, 2021

微信小程序和php的登录实现

首先用户登录所需的是用户的唯一标识openid,获取openid后再获取用户信息即刻存储到数据库中。
注意:若errcode为40029要新建一个小程序项目填写你的appid
若ajax请求失败,右上角详情-本地设置-勾选->不效验合法域名、web-view(业务域名)、TLS版本以及HTTPS证书

一、前端请求

onLoad: function (options) {
    wx.login({
       success:function(res){
         //发送请求
         wx.request({
           url: 'http://localhost/test/wxlogin.php', //接口地址
           data: {code:res.code},
           header: {
             'content-type': 'application/json' //默认值
           },
           success: function (res) {
             console.log(res.data)
           }
         })
       }
     })
  },

二、php代码

首先登录微信小程序网站-开发管理-开发设置,找到你的appid和appsecret

<?php
		$code = $_GET['code'];
		$appid = '你的appid';
		$AppSecret = '你的appsecret';
		$url = "https://api.weixin.qq.com/sns/jscode2session?appid=".$appid."&secret=".$AppSecret."&js_code=".$code."&grant_type=authorization_code";
		$str = file_get_contents($url);
		$json = json_decode($str);
		$arr = get_object_vars($json);
		echo $openid = $arr['openid']; //这是openid
		echo '</br>';
		echo $session_key = $arr['session_key']; //这是session_key
?>

三、获取用户信息

<!-- 如果只是展示用户头像昵称,可以使用 <open-data /> 组件 -->
	<open-data type="userAvatarUrl"></open-data>
	<open-data type="userNickName"></open-data>
	<!-- 需要使用 button 来授权登录 -->
	<button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授权登录</button>
	<view wx:else>请升级微信版本</view>
Page({
  data: {
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },
  onLoad: function() {
    // 查看是否授权
    wx.getSetting({
      success (res){
        if (res.authSetting['scope.userInfo']) {
          // 已经授权,可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success: function(res) {
              console.log(res.userInfo)
            }
          })
        }
      }
    })
  },
  bindGetUserInfo (e) {
    console.log(e.detail.userInfo)
  }
})

在控制台输出的信息就是获取用户的信息

四、存入数据库

这里代码就先不写了,之前获取的openid相当于用户表的主键,其他信息都在console.log(res.userInfo)里

PHP 相关文章推荐
PHP三层结构(上) 简单三层结构
Jul 04 PHP
ThinkPHP关联模型操作实例分析
Sep 23 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
php更新修改excel中的内容实例代码
Feb 26 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 PHP
php防止sql注入简单分析
Mar 18 PHP
PHP测试成功的邮件发送案例
Oct 26 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
PHP实现断点续传乱序合并文件的方法
Sep 06 PHP
PHP 实现base64编码文件上传出现问题详解
Sep 01 PHP
PHP新手指南
PHP命令行与定时任务
Apr 01 #PHP
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
Apr 01 #PHP
如何判断微信付款码和支付宝付款码
Apr 01 #PHP
Laravel中获取IP的真实地理位置
Apr 01 #PHP
Jsonp劫持学习
利用ajax+php实现商品价格计算
You might like
广播爱好者需要了解的天线知识
2021/03/01 无线电
PHP 压缩文件夹的类代码
2009/11/05 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
php常用hash加密函数
2014/11/22 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
几种经典排序算法的JS实现方法
2016/03/25 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
jQuery实现倒计时(倒计时年月日可自己输入)
2016/12/02 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
利用jQuery+localStorage实现一个简易的计时器示例代码
2017/12/25 jQuery
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
Foot Locker意大利官网:全球领先的运动鞋和服装零售商
2017/05/30 全球购物
Europcar德国:全球汽车租赁领域的领导者
2018/08/15 全球购物
为什么要做架构设计
2015/07/08 面试题
《动手做做看》教学反思
2014/04/09 职场文书
保研推荐信格式
2015/03/25 职场文书
升职自荐信范文
2015/03/27 职场文书
春节慰问简报
2015/07/21 职场文书
小学大队委竞选口号
2015/12/25 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL