对于小程序的登录流程微信官方文档也有描述不清的情况,作为一个后端开发研究了小程序关于登录的所有信息对整个登录流程做一个梳理。
首先明确一点,这里指的小程序登录时wx.login(),并不是授权获取用户信息,这是两个东西,把这一点明确了对整个流程的理解就会比较容易。
wx.login()的登录用户是无感知的,进行登录之前需要先校验微信小程序的登录态是否过期,过期了才去登录,这里的校验用wx.checkSession进行。wx.login()调用之后获取到code,code传给后端,后端根据code调用微信服务端接口拿到用户的openid、unionid和session_key(用来解密用户的隐私数据)。然后服务端根据自己的原则建立一个token(时间令牌),此token需要能关联到用户的openid并且有过期失效,便于关联到用户和防止泄露。token返回给小程序端(并不是吧openid 和session_key 返回,安全考虑)。用户在之后请求后端接口的过程中需要携带token已校验用户身份。如果token过期需要用户再次调用wx.login()来请求后端获取新的token。
wx.checkSession({
success(){
checkLogin();
},fail(){
login();
}
});
function checkLogin(){
wx.request({
url:'/api/user/checkLogin',
data:{
token:token
},
success(res){
if(已过期){
login();
}
}
});
}
function login(){
wx.login({
if (res.code) {
//发起网络请求
wx.request({
url: 'https://test.com/onLogin',
data: {
code: res.code
},
success(res){
//存储返回的token到storage
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
});
}
授权获取用户基本信息,授权后请求后端接口把加密的数据传给后端、后端对数据进行解密(需要用户会话的session_key),然后把数据存储到数据库,理论上用户只需一次授权登录,之后用户的头像昵称等数据都可从后台返回。
军事最新军事新闻视频业务自助下单平台网站天河网站建设服务吕梁网络推广电商网站设计公司只选亿企邦网站建设的公司联系方式a站全名叫什么公司企业网络推广哈尔滨网页案例分析怎么在网上卖自己的产品短视频app推荐杭州注册公司代办外贸营销推广公司网站上线需要哪些步骤直销公司最新名单明朝传奇网页游戏谭木记网页制作源代码网站建设企业宣传网上找兼职的网站336633域名网页设计公司主要业务合肥企业建站系统创建全国文明城市倡议书郑州一建南阳分公司重庆企业网站营销设计优秀文创产品设计案例直播软件平台网站设计与网页制作毕业论文自我介绍网页制作html海口做网站10大品牌中国互联网公司排名2023