导言:
- 使用
Node.js的Koa2框架,在本地服务器上实现微信小程序的登录过程。- 该登录逻辑设计根据微信官方登录时序图改编,并不是标准流程,仅供学习交流使用。
- 重点在思路,忽视了部分细节。
1.登录逻辑

-
微信小程序中新建
index页面,设计“登录”按钮,点击按钮触发以下事件。 -
在微信小程序的客户端调用接口
wx.login()来获取code(登录凭证)。 -
调用接口
wx.request()将code发送到开发者服务器。 -
在开发者服务器处,将从客户端传递过来的
code以及小程序本身的appid和appsecret组合成一段URL:// GET请求 // APPID,SECRET,JSCODE分别替换为appid,appsecret和code的值 https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code -
在开发者服务器上发送上述
GET请求,微信服务器会返回openid和session_key的值。 -
通过算法(可以是当前时间或随机数等等),生成
_3rd_session。 -
将
openid和session_key封装成JSON对象。 -
生成的
_3rd_session作为key,封装好的JSON对象作为value,存储到Redis数据库中,并设置好合适的过期时间。 -
将生成的
_3rd_session发送到客户端中。 -
在客户端中,调用接口
wx.setStorageSync(),把_3rd_session存入缓存中。 -
完整的登录流程结束。
2.自定义登录态

2.1 登录验证
用户登录后重新进入小程序时,调用接口wx.checkSession()来检测登录态。若有效,则继续进入下一页面;若失效,则重新发起上述的登录流程。
2.2 登录态维护
- 用户已经登录成功,进入下一级页面。
- 用户发起敏感请求(如删除,修改,添加等操作),调用接口
wx.request()时,使其携带缓存中的_3rd_session。 - 开发者服务器响应请求前,先到
Redis数据库中查询有无键值为_3rd_session的记录。 - 若记录存在并有效,则正常响应请求。
- 若记录不存在或已经失效,则拒绝请求,提醒用户未登录。
3.前期准备
- 获取
appid

本文档介绍了如何使用Node.js的Koa2框架,在本地服务器上实现微信小程序的登录流程。详细讨论了登录逻辑,包括客户端获取登录凭证、服务器验证和维护登录态,以及关键代码示例。内容适用于学习交流,不遵循标准登录流程。
1569

被折叠的 条评论
为什么被折叠?



