前言
最近团队在开发一款小程序,都是新手,一边看文档,一边开发。在开发中会遇到各种问题,今天把小程序登录这块的流程整理下,做个记录。
小程序的登录跟平时自己APP这种登录验证还不太一样,多了一个角色,那就是微信服务器。
根据微信官方提供的登录流程时序图可以清楚的了解小程序登录需要多少个步骤,下面我们来总结下:
首先code是微信给的,如果你随意生成code去验证肯定是无效的,只有微信给的code才有效。code传到开发者自己的服务后,再去问微信:
Hi 哥们,我这个code是有效的还是无效的啊?
微信会告诉你是有效还是无效,有效的情况下还会给你一个用户的标识,也就是openid,同时还会有一个sessionkey,也就是会话的key。sessionkey的有效期默认是2小时,当用户一直在使用小程序的话会自动刷新,这个是由微信这边来维护的。
注意:
所以我们要为session_key创建别名,这个别名关联的哪个用户只有我们自己知道,唯一需要做的工作就在这块。
我推荐2种方式来做关联:
第一种:随机生成key, 关联openid,存入redis中,当请求带入key,直接从redis中获取openid得到当前用户信息,这个其实也就是我们自己去维护了会话信息
第二种:采用JWT生成token,将openid绑定到token中,将token返回给小程序,请求的时候带上token,通过解析token得到用户信息。
下面我们以第二种方式来进行讲解,会贴上部分代码:
小程序中在app.js中的onLaunch方法中增加获取code方法,并且调用后端的登录接口获取token:
wx.login({ success: function (res) { var code = res.code; if (code) { console.log('app启动获取用户登录凭证:' + code); let params = { "code": code }; let result = config.requestHttp(config.url.userLogin, 'POST', params) result.then(res => { let data = res.data if (data.code == 200) { wx.setStorageSync("login_token", data.data.token); } }).catch(err => { console.log(err) }); } else { console.log('获取用户登录态失败:' + res.errMsg); } } })
网页名称:关于微信小程序登录的那些事-创新互联
网页链接:https://www.cdcxhl.com/article44/jsjee.html
成都网站建设公司_创新互联,为您提供网站内链、网站排名、微信小程序、品牌网站建设、品牌网站设计、服务器托管
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联