微信小程序和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制作静态网站的模板框架
Oct 09 PHP
PHP更新购物车数量(表单部分/PHP处理部分)
May 03 PHP
zf框架db类的分页示例分享
Mar 14 PHP
对PHP新手的一些建议(PHP学习经验总结)
Aug 20 PHP
Yii把CGridView文本框换成下拉框的方法
Dec 03 PHP
彻底删除thinkphp3.1案例blog标签的方法
Dec 05 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
简单谈谈PHP中的trait
Feb 25 PHP
php基于SQLite实现的分页功能示例
Jun 21 PHP
php+js实现点赞功能的示例详解
Aug 07 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
php操作memcache缓存方法分享
2015/06/03 PHP
Symfony2学习笔记之插件格式分析
2016/03/17 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
PHP的Trait机制原理与用法分析
2019/10/18 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
javascript arguments 传递给函数的隐含参数
2009/08/21 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
jQuery实现textarea自动增长宽高的方法
2015/12/18 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
深究AngularJS中ng-drag、ng-drop的用法
2017/06/12 Javascript
vue 文件目录结构详解
2017/11/24 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
仿照Element-ui实现一个简易的$message方法
2020/09/14 Javascript
python 正则式使用心得
2009/05/07 Python
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
python使用psutil模块获取系统状态
2016/08/27 Python
PYQT5 vscode联合操作qtdesigner的方法
2020/03/24 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
星空联盟C# .net笔试题
2014/12/05 面试题
建筑专业自荐信
2013/10/18 职场文书
家长会主持词开场白
2014/03/18 职场文书
优秀家长事迹材料
2014/05/17 职场文书
交通事故和解协议书
2014/09/25 职场文书
2015年节能减排工作总结
2015/05/14 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android