E企盈营销工具技术服务商 热线:4006-838-530

微信网页授权,微信小程序开发用户授权登录

E企盈直播平台营销卖货系统

用wx.login获取登录凭证code!–pages/user/index.wxml–viewhidden='{{boolean}}’viewwx:if=”{{isLogin==1}}”!–个人信息–viewclass=’infomation’!–基本信息–viewnavigatorhover-href=””imagesrc=”{{dataList.head_photo}}”/image/navigatorviewviewnavigatorhover-href=””{{dataList.username}}/navigator/viewviewwx:if=”{{dataList.title==”}}”navigatorhover-href=””这个玩家很懒,什么也没留下/navigator/viewviewwx:if=”{{dataList.title!=”}}”navigatorhover-href=””{{dataList.title}}/navigator/view/view/view/view!–“我的”列表–viewclass=’myList’viewclass=’list’/view/view/viewviewwx:if=”{{isLogin==2}}”viewclass=’bgBox’/viewview/view/view/viewwx.checkSession小程序wx.checkSession校验登陆态success:接口调用成功,session_key未过期;fail:接口调用失败,session_key已过期;小程序端wx.login获取code并wx.request提交code给己方服务器服务器提交Appid+appSecret+code到微信方服务器获取session_key&openid服务器根据session_key&openid生成3rd_session(微信方提出的基于安全性的考虑,建议开发者不要将openid等关键性信息进行数据传输)并返回3rd_session到小程序端小程序端wx.setStorage存储3rd_session在后续用户操作需要凭证时附带该参数小程序端wx.getUserInfo获取用户信息+wx.getStorage获取3rd_session数据后,一并wx.request提交给己方服务器服务器SQL用户数据信息更新//用户登陆functionuserLogin(){wx.checkSession({success:function(){//存在登陆态},fail:function(){//不存在登陆态onLogin()}})}functiononLogin(){wx.login({success:function(res){if(res.code){//发起网络请求wx.request({url:’OurServerApiUrl’,data:{code:res.code},success:function(res){constself=thisif(逻辑成功){//获取到用户凭证存儲3rd_sessionvarjson=JSON.parse(res.data.Data)wx.setStorage({key:”third_Session”,data:json.third_Session})getUserInfo()}else{}},fail:function(res){}})}},fail:function(res){}})}functiongetUserInfo(){wx.getUserInfo({success:function(res){varuserInfo=res.userInfouserInfoSetInSQL(userInfo)},fail:function(){userAccess()}})}functionuserInfoSetInSQL(userInfo){wx.getStorage({key:’third_Session’,success:function(res){wx.request({url:’OurServerApiUrl’,data:{third_Session:res.data,nickName:userInfo.nickName,avatarUrl:userInfo.avatarUrl,gender:userInfo.gender,province:userInfo.province,city:userInfo.city,country:userInfo.country},success:function(res){if(逻辑成功){//SQL更新用户数据成功}else{//SQL更新用户数据失败}}})}})}第三方服务器和微信服务器:注意:session_key是微信服务器生成的针对用户数据进行加密签名的密钥,不应该进行传输到客户端.生成3rd_session用于第三方服务器和小程序之间做登录态校验.为了保证安全性,3rd_session应该长度够长,一定有效时间,session_key+openid,key,为value,写入到session存储.3rd_session写入storage:后续用户进入小程序,先从storage读取3rd_session根据请求,在session存储中查找合法的session_key和openidApp({onLaunch:function(){wx.login({success:function(res){varcode=res.code;if(code){console.log(‘获取用户登录凭证:’+code);}else{console.log(‘获取用户登录态失败:’+res.errMsg);}}});}})唯一标识(openid)和会话密钥(session_key)wx.checkSession检测当前用户登录态是否有效wx.checkSession({success:function(){//session未过期,并且在本生命周期一直有效},fail:function(){//登录态过期wx.login()//重新登录….}})服务端处理逻辑wx.checkSession({success:function(res){//session_key未过期},fail:(res={//session_key已过期//进行登录操作wx.login({success:function(res){consturl=’接口地址’//本次项目中是从后台获取session_key的接口,可能流程不同,会有相应的变化constdata={//你要传的数据}wepy.request({url:url,method:’POST’,data:data,}).then(res={if(res.data.code==0){//拿到的openid和session_key存到缓存中//调用换取用户id接口[需求不同,可能接口会有相应的变化]consturl=’获取用户id的接口’constdata={‘要传的数据’}wepy.request({url:url,method:’POST’,data:data,}).then((res)={//该接口设计返回的参数包括换取的用户ID和返回的用户的微信中信息,也就是通过button获取的那个userInfo[我们为了后续的处理,所以后台这块返回用户信息,如果用户还未登录,用户信息,返回是空,反之则有值]//存储用户IDwx.setStorage({key:’userId’,data:’获取到的用户ID’})//存储用户信息[userInfo]wx.setStorage({key:’userInfo’,data:’获取到的用户信息’})})}})}});})})onShow(){//从缓存中获取session_keyletskey=wx.getStorageSync(‘session_key’);if(!skey){//如果session_key不存在,再次执行登录wx.login({//该处登录同app.wpy[流程一样]});}else{//session_key存在}}//我们假设这个页面需要获取用户的信息,首先给一个button[open-type设置为getUserInfo],使用这个拿到用户的信息,getUserInfo(e){this.userInfo=e.detail.userInfo;//e.detail.userInfo携带的就是用户的个人信息[包括头像、昵称等]if(e.detail.userInfo){wx.showToast({title:’授权成功’,icon:’success’,duration:1500})//这里做这样的处理,是因为需求需要点击购物车按钮跳转订单待支付页,在没有获取到用户信息之前,跳转购物车的按钮隐藏,获取用户信息按钮显示,反之则返this.button=’none’;//获取用户信息buttonthis.myMenu=’block’;//跳转待支付订单页//更新缓存中的用户信息wx.setStorage({key:’userInfo’,data:this.userInfo})}elseif(e.detail.errMsg==’getUserInfo:failauthdeny’){wx.showModal({title:’提示’,content:’若不授权微信登录,则无法使用小程序。点击”授权”按钮并允许使用”用户信息”方可正常使用。’,showCancel:false,confirmText:’授权’,success:(res={wx.openSetting({success:(res)={}})})})}}https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code对称解密的目标密文为Base64_Decode(encryptedData)。对称解密算法初始向量为Base64_Decode(iv),其中iv由数据接口返回。signature=sha1(rawData+session_key)//最终供外面调用的方法functionlogin(){console.log(‘logining……….’);//调用登录接口wx.login({success:function(e){console.log(‘wxloginsuccessd……..’);varcode=e.code;wx.getUserInfo({success:function(res){console.log(‘wxgetUserInfosuccessd……..’);varencryptedData=encodeURIComponent(res.encryptedData);thirdLogin(code,encryptedData,res.iv);//调用服务器api}})}});}functionthirdLogin(code,encryptedData,iv){varurl=”eeee/xxx/login/ttttt”;varparams=newObject();params.code=code;params.encryptedData=encryptedData;params.iv=iv;buildRequest(newObject(),url,params,{onPre:function(page){},onSuccess:function(data){console.log(‘myloginsuccessd……..’);console.log(data);getApp().globalData.session_id=data.session_id;getApp().globalData.uid=data.uid;getApp().globalData.isLogin=true;},onError:function(msgCanShow,code,hiddenMsg){}}).send();}

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信网页授权,微信小程序开发用户授权登录
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏