符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
前言
创新互联专注于龙圩企业网站建设,响应式网站设计,电子商务商城网站建设。龙圩网站建设公司,为龙圩等地区提供建站服务。全流程按需定制,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务最近团队在开发一款小程序,都是新手,一边看文档,一边开发。在开发中会遇到各种问题,今天把小程序登录这块的流程整理下,做个记录。
小程序的登录跟平时自己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); } } })