微信小程序和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 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
综合图片计数器
Oct 09 PHP
PHP删除非空目录的函数代码小结
Feb 28 PHP
基于PHP常用字符串的总结(待续)
Jun 07 PHP
Thinkphp模板中截取字符串函数简介
Jun 17 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
php微信公众号开发(4)php实现自定义关键字回复
Dec 15 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 PHP
php和asp语法上的区别总结
May 12 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
测试php函数的方法
2013/11/13 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
php数组键名技巧小结
2015/02/17 PHP
php通过排列组合实现1到9数字相加都等于20的方法
2015/08/03 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
js综合应用实例简单的表格统计
2013/09/03 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
使用JQuery中的trim()方法去掉前后空格
2016/09/16 Javascript
JavaScript正则表达式实例详解
2016/10/16 Javascript
JavaScript该如何学习 怎样轻松学习JavaScript
2017/06/12 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
react native基于FlatList下拉刷新上拉加载实现代码示例
2018/09/30 Javascript
详解vantUI框架在vue项目中的应用踩坑
2018/12/06 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
python cookielib 登录人人网的实现代码
2012/12/19 Python
python基础教程之字典操作详解
2014/03/25 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
如何用Python制作微信好友个性签名词云图
2019/06/28 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
军训心得体会
2013/12/31 职场文书
公司门卫管理制度
2014/02/01 职场文书
个人授权委托书模板
2014/09/14 职场文书
劳动仲裁代理词范文
2015/05/25 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
聊聊Python中关于a=[[]]*3的反思
2021/06/02 Python