微信小程序的登录功能如何实现
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇"微信小程序的登录功能如何实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"微信
千家信息网最后更新 2025年02月01日微信小程序的登录功能如何实现
这篇"微信小程序的登录功能如何实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"微信小程序的登录功能如何实现"文章吧。
微信小程序登录
一. 小程序不支持cookie会话
1. 通过传递与检验3rd_session来保持会话
2. 3rd_session可以执行'`head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 168`该命令生成
3. 使用Redis或者数据库存储session
4. 生成的3rd_session发送给客户端,写入storage
5. 客户端的每次请求必须带上3rd_session
二、加密数据解码
1. $iv,$code是被加密过的数据,由于请求过程中因为编码原因+号变成了空格,所以我们需要用下面的方法转换回来
function define_str_replace($data){ return str_replace(' ','+',$data); }
三、例子:
php
// 微信登录 public function weixin_login(){ $session_db=D('Session'); $session_id=I('get.sessionid',''); $session=$session_db->getSession($session_id); if( !empty( $session ) ){ $this->ajaxReturn(['error_code'=>0,'sessionid'=>$session_id]); }else{ $iv=define_str_replace(I('get.iv')); //把空格转成+ $encryptedData=urldecode(I('get.encryptedData')); //解码 $code=define_str_replace(I('get.code')); //把空格转成+ $msg=D('Weixin')->getUserInfo($code,$encryptedData,$iv); //获取微信用户信息(openid) if($msg['errCode']==0){ $open_id=$msg['data']->openId; $users_db=D('Users'); $info=$users_db->getUserInfo($open_id); if(!$info||empty($info)){ $users_db->addUser(['open_id'=>$open_id,'last_time'=>['exp','now()']]); //用户信息入库 $info=$users_db->getUserInfo($open_id); //获取用户信息 $session_id=`head -n 80 /dev/urandom | tr -dc A-Za-z0-9 | head -c 168`; //生成3rd_session $session_db->addSession(['uid'=>$info['id'],'id'=>$session_id]); //保存session } if($session_id){ $this->ajaxReturn(['error_code'=>0,'sessionid'=>$session_id]); //把3rd_session返回给客户端 }else{ $this->ajaxReturn(['error_code'=>0,'sessionid'=>$session_db->getSid($info['id'])]); } }else{ $this->ajaxReturn(['error_code'=>'用户信息获取失败!']); } } }
获取微信信息模型(包括信息解密,官方例子点击下载)
require_once ABS_APP_PATH.'/Addon/Aes/wxBizDataCrypt.php';class WeixinModel{ // 获取微信的用户信息(openid) public function getUserInfo($code,$encryptedData,$iv){ $appid=C('appid'); $secret=C('secret'); $grant_type='authorization_code'; $url='https://api.weixin.qq.com/sns/jscode2session'; $url= sprintf("%s?appid=%s&secret=%s&js_code=%s&grant_type=%",$url,$appid,$secret,$code,$grant_type); $user_data=json_decode(file_get_contents($url)); $session_key= define_str_replace($user_data->session_key); $data=""; $wxBizDataCrypt=new \WXBizDataCrypt($appid,$session_key); $errCode=$wxBizDataCrypt->decryptData($encryptedData,$iv,$data); return ['errCode'=>$errCode,'data'=>json_decode($data),'session_key'=>$session_key]; } }
javascript
getUserInfo: function(cb) { var that = this if (this.globalData.userInfo) { typeof cb == "function" && cb(this.globalData.userInfo) } else { //调用登录接口 wx.login({ success: function(r) { wx.getUserInfo({ success: function(res) { that.login({ code: r.code, iv: res.iv, encryptedData: encodeURIComponent(res.encryptedData), }) that.globalData.userInfo = res.userInfo typeof cb == "function" && cb(that.globalData.userInfo) } }) } }) } }, login: function(param) { wx.request({ url: this.requestUrl('Index/weixin_login'), data: param, header: { 'content-type': "application/json", }, success: function(res) { var data = JSON.parse(res.data.trim()); wx.setStorageSync('sessionid', data.sessionid); } }) },
以上就是关于"微信小程序的登录功能如何实现"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
信息
登录
程序
内容
用户
功能
客户
数据
空格
生成
例子
客户端
文章
知识
篇文章
加密
价值
原因
命令
大部分
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
宁波桌面软件开发流程八个步骤
恒华科技投资互联网
旷视科技网络技术有限公司
软件开发增值税多少钱
泰州集成显卡服务器
b站卡无服务器
sql数据库表的更新语句
ca系统包括安全服务器吗
云霄县安博网络技术工作室
个人加强网络安全监管
漯河服务器机柜销售
全球服务器分布范围
北京京城互联网科技有限公司
中移在线软件开发怎么样
山东信息技术网络技术会考
工业4.0 软件开发
软件开发公司产品部门职责
有关网络安全的作品名称
龙盈软件开发有限公司
aon数据库
svn本地服务器搭建
西安一码通美国服务器
数据库技术智慧树答案
网络安全责任书如何写
网络安全战队 名称
网络安全教育英语视频
云服务器可以做黄昏职业吗
象山财务软件开发公司价格
龙岗区正规网络技术开发服务标准
青山湖科技城互联网公司