微信小程序登录
一. 小程序不支持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是被加密过的数据,由于请求过程中因为编码原因+号变成了空格,17 2020.10 [太原seo公司哪家好]微信小程序实现验证码获取倒计时的效果 这篇文章主要为大家详细介绍了微信小程序实现验证码获取倒计时效果,具有一定的参考价值▪, [太原seo公司哪家好] 感兴趣的小伙伴们可以参考一下 本文实例为大家分享了微信小程,所以我们需要用下面的方法转换回来
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-&◁◆;gt☆☆■=;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')-&•■•■;gt;getUserInfo($code,$encryptedData•■,$iv); //获取微信用户信息(openid) if($msg['○△◇•;errCode'●◆□;]==0){ $open_id=$msg['data']->…☆□;openId◁=◇; $users_db=D('Users'); $info=$users_db-&▲…▽=;gt▼◇◁;getUserInfo($open_id); if(-☆▷◇!$info
empty($info)){ $users_db-&○□▽☆;gt•▪◆;addUser(['open_id'◁○;=>$open_id,'★▪;last_time'=>['▽△;exp'△▲;,'=▼★;now()'○◁;]]); //用户信息入库 $info=$users_db-&▼▲;gt;getUserInfo($open_id)◆•; //获取用户信息 $session_id=`head -n 80 /dev/urandom
tr -dc A-Za-z0-9
head -c 168`; //生成3rd_session $session_db-&…△▽▼;gt☆★;addSession(['uid'=>…▲□;$info['id'],'★▲;id'=&•◁◁-;gt;$session_id]); //保存session } if($session_id){ $this->ajaxReturn(['error_code'◆■;=>□▷…;0,'sessionid'=>$session_id]); //把3rd_session返回给客户端 }else{ $this->ajaxReturn(['error_code'▷◁◇;=&•□…;gt★◇;0☆□,'•☆▼;sessionid'=>$session_db->getSid($info['★…◆;id'▲▽;])])▼▷=□; } }else{ $this->ajaxReturn(['error_code'=&-▪;gt;'○★□•;用户信息获取失败!邯郸市小程序制作公司']); } } }
获取微信信息模型(包括信息解密,[烟台高端seo外包公司]官方例子点击下载)
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-&=△☆;gt;session_key); $data=""☆◇▷; $wxBizDataCrypt=new \WXBizDataCrypt($appid,$session_key); $errCode=$wxBizDataCrypt->decryptData($encryptedData,$iv,$data); return ['errCode'=&=▪□■;gt;$errCode▼▽▽○,'data'=>▪☆;json_decode($data)○••,'session_key'•●;=&▼▲;gt;$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)▲▷△-; } }) }○▪,
以上就是小程序开发之登录实例详解的详细内容◇■•-,东乡县小程序制作公司更多请关注久澳传媒编程栏目其它相关文章!
*请认真填写需求信息,我们会在24小时内与您取得联系。