微信小程序和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边学边教》(02.Apache+PHP环境配置――下篇)
Dec 13 PHP
dedecms中显示数字验证码的修改方法
Mar 21 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
Aug 11 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
PHP生成器简单实例
May 13 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
Mar 17 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
浅析PHP7 的垃圾回收机制
Sep 06 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电台频率大全 - 28 甘肃省
2020/03/11 无线电
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
2013/01/25 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
2016/11/24 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
react使用CSS实现react动画功能示例
2020/05/18 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
python正则表达式re模块详细介绍
2014/05/29 Python
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
python删除列表中重复记录的方法
2015/04/28 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
HTML5 与 XHTML2
2008/10/17 HTML / CSS
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
微博营销计划书
2014/01/10 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
个人承诺书
2014/03/26 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
2016年社区植树节活动总结
2016/03/16 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
Java对文件的读写操作方法
2022/04/29 Java/Android