微信小程序和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做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
使用PHP socke 向指定页面提交数据
Jul 23 PHP
php数组应用之比较两个时间的相减排序
Aug 18 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
Apr 23 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
Apr 17 PHP
php实现的日历程序
Jun 18 PHP
php实现文件上传及头像预览功能
Jan 15 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
PHP 模拟登陆功能实例详解
Sep 10 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
PHP5/ZendEngine2的改进
2006/10/09 PHP
给多个地址发邮件的类
2006/10/09 PHP
php中in_array函数用法分析
2014/11/15 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
PHP 8新特性简介
2020/08/18 PHP
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
JavaScript实战(原生range和自定义特效)简单实例
2016/08/21 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
js设计模式之单例模式原理与用法详解
2019/08/15 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
python 动态加载的实现方法
2017/12/22 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
python pandas dataframe 去重函数的具体使用
2020/07/20 Python
python批量修改文件名的示例
2020/09/27 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
Linux机考试题
2015/10/16 面试题
婚礼证婚人证婚词
2014/01/08 职场文书
中班开学寄语
2014/04/04 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
悬空寺导游词
2015/02/05 职场文书
导游词之蓬莱长岛
2019/12/17 职场文书
Golang: 内建容器的用法
2021/05/05 Golang
MySQL中CURRENT_TIMESTAMP的使用方式
2021/11/27 MySQL
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers