微信用户访问小程序的登录过程详解

微信用户访问小程序的登录过程详解

2023年6月28日发(作者:)

微信⽤户访问⼩程序的登录过程详解概述当你开发完了⼀个⼩程序并部署上线后,某个微信⽤户第⼀次访问这个⼩程序的时候,会弹出⼀个授权界⾯,⽤户可以选择是否使⽤微信登录,如果选择是,则直接进⼊到⼩程序。当你第⼆次进⼊该⼩程序的时候,你会发现授权界⾯不会弹出来了,直接就进⼊⼩程序了。这个过程看起来⾮常的简单,但其实实现起来相当的⿇烦和繁琐。涉及到会话、安全、验证等各种各样的问题。下⾯笔者介绍⼀下实现这个登录过程的思路。微信提供⼩程序登录流程图我们可以从找到这张图。想完全看懂张图,需要了解很多东西。我们先来看看微信提供的⼏个接⼝。⼩程序接⼝介绍()这个⽅法是⼩程序端发起的,如果是使⽤腾讯团队推出的⼩程序组件化开发框架的wepy的话,伪代码如下:() .then(res => { const code = })这样⼦就可以从微信平台获取⼀个code,这个code是临时登录凭证,⽤于获取openid的。t()这个也是⼩程序端发起的,⽤于请求开发者服务器(也即是我们的应⽤服务器)上的接⼝,调⽤的伪代码如下: t({ url: `xxurl`, data: { //⼊参 }, }) .then(res => { //从res中获取应⽤服务器返回的数据 })获取openid的接⼝当某个开发主体开发了⼀个⼩程序后,当⽤户访问这个⼩程序的时候,微信平台会为这个⽤户分配⼀个openid。如下接⼝:这个微信接⼝⼀般是我们的应⽤服务器发起调⽤的,⽽不是⼩程序端发起的。rInfogetUserInfo这个接⼝⽤于在微信平台获取⽤户信息。注意,如果微信⽤户第⼀次访问⼩程序,是弹出⼀个授权界⾯的。当⽤户授权后,getUserInfo才能调⽤并返回⽤户数据。这个四个接⼝在使⽤微信访问⼩程序的时候都会⽤到的。基于token保持会话和登录认证⼩程序虽然不⽀持cookie的机制,但是⽀持在header⾥设置token。这个token是应⽤服务器⽣成的。header: { 'xxxxtoken': token, }当⼩程序调⽤应⽤服务器接⼝的时候,必须带上这个token,应⽤服务端则对这个token进⾏解析和认证。当然如果是第⼀次访问⼩程序,只能由应⽤服务器先⽣成token。 笔者打算⽤伪代码来表达使⽤token后,整个登录的过程,因为⽤⽂字或者图⽐较难表达。const code = ();if (code ) {//code存在//从⼩程序的本地中获取totenconst token = rageSync('xxxxxtoken') if (token ) {//⼩程序本地存有token,⽆需弹出授权界⾯ //直接传⼊code字段,调⽤应⽤服务器的验证token的⽅法,如果校验成功,需要返回⽤户信息。 const userinfo = t(xxxxxValidateToken(code )); if (userinfo) { //说明登录成功,直接进⼊⼩程序的主界⾯。 } } else { //说明⼩程序本地没有token,这个时候需要弹出授权界⾯,让微信⽤户决定是否访问⼩程序,如果⽤户选择是的话。 const weixinuserinfo = rInfo();//会弹出授权界⾯,微信提供的 if (weixinuserinfo ){ //⽣成或者验证token const userinfo = t(xxxxxValidateToken(code )); const token = en(); //将token存储到⼩程序本地 rageSync('xxxxxtoken', token ) } }

}上⾯的伪代码中,会调⽤应⽤服务器(我们的应⽤服务器)的⽅法。这个⽅法的实现逻辑⼤概如下:

1、先验证这个微信⽤户是否存在,可以调⽤微信提供的jscode2session⽅法,该⽅法会返回⼀个openid。我们必须在业务代码⾥,将这个openid保存到数据库,并和userid关联起来。2、判断是否是新的⽤户,如果是,则⽣成token和⽣成新的⼀个⽤户信息存储到数据库。如果不是新的⽤户,则验证token。这个流程⾛完后,⼩程序就可以通过t⽅法,带上token,真正的访问应⽤服务器的业务⽅法,获取业务数据。token的⽣成和校验见过有些公司是直接将userid和openid,加密后返回给⼩程序。也见过⽤userid和password加密后返回给⼩程序。如果是选择第⼆种⽅式的话,验证token的逻辑⼤概如下:先解密,获取userid和password,并根据userid从数据库中获取到⽤户密码,跟从token中解密出来的password进⾏⽐对,如果相等,则校验通过。总结现在再回头看看微信提供登录路程图,是否好理解⼀些了。以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687893382a54560.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信