用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();}
微信网页授权,微信小程序开发用户授权登录
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信网页授权,微信小程序开发用户授权登录
相关推荐
大兴区E企盈小程序美团商城发布生活服务开放平台 – E企盈小程序
微信小程序凌云县E企盈小程序个人心得
微信小程序之获取用户位置权限(拒绝后复兴区E企盈小程序提醒)
瓯海区E企盈小程序小程序表单输入(新手)
焉耆E企盈小程序微信小程序开发者工具更新后出现WXSS文件编译错误
[小程序]编译.wxss出错2no迎泽区E企盈小程序tfound
微信小程序测试过程中的各个要点(干货天门市E企盈小程序)
微信小保靖县E企盈小程序程序:编译.wxss文件错误解决
小程序测溪湖区E企盈小程序试注意要点
微信开放平台绑定各移动应用、网站应用、公众郎溪县E企盈小程序号、小程序、第三方的个数
小程序额尔古纳市E企盈小程序转发事件生命周期
小程序wxc钢城区E企盈小程序harts的项目实用
最新评论
不错的小程序案例
优秀的团队,不错的服务!
讲的很好
主播长的帅气
好系统好服务
优秀的团队
好服务,值得信赖
不错的服务