微信小程序实现用户登录流程

简介: 微信小程序实现用户登录流程

登录流程

实现小程序用户登录流程,大致分为以下几个步骤

  1. 调用 wx.login() 获取 临时登录凭证code ,并回传到开发者服务器
  2. 调用 auth.code2Session 接口,换取用户唯一标识 OpenID 和会话密钥 session_key。自定义登录状态关联openid和session_key,返回自定义登录状态
  3. 前端缓存自定义状态到storage,wx.request()携带自定义登录状态请求数据
  4. 开发者服务器通过自定义登录状态查询openid和session_key,验证通过返回业务数据

image.png

接下来仔细讲讲实现过程

1 获取临时code

通过调用wx.login(),获取登录凭证,有效期为5分钟

wx.login({
  success (res) {
    console.log(res.code)
  }
})

复制

2 调用 auth.code2Session 接口,换取用户唯一标识

此步骤需要在服务端完成,get方式请求

https://api.weixin.qq.com/sns/jscode2session?
appid=APPID&    // 小程序 appId
secret=SECRET&  // 小程序 appSecret
js_code=JSCODE& // 登录时获取的 code
grant_type=authorization_code // 授权类型,此处只需填写 authorization_code
返回值

复制

返回JSON数据包,包含openid、session_key等。创建自定义登录状态,与openid、session_key关联,存到数据库。并把自定义登录状态返回前端。

注意:这里强调下,session_key是有时效的,但是后台无法验证,需要前端验证。且微信官方不建议直接返回openid给前端。


3 缓存自定义登录状态,请求业务数据带上自定义登录状态

上面说到session_key是有时效的,如果我们调用微信接口(如服务端获取用户开放数据),一定要保证session_key在有效期内。所以在请求前要验证登录状态是否过期

wx.checkSession({
  success () {
    //session_key 未过期,并且在本生命周期一直有效
  },
  fail () {
    // session_key 已经失效,需要重新执行登录流程
    wx.login() //重新登录
  }
})

复制


4 验证并返回业务数据

这里的验证不是说验证session_key是否在有效期内,而是验证是否存在session_key和openid,微信官方未提供服务端验证方法,也不会把 session_key 的有效期告知开发者,下面就是官方对会话密钥 session_key 有效性的解释

image.png

这里我个人觉得,如果是自有业务的接口,session_key不是很重要,也可以说不需要,session_key是否有效,对自有业务影响不大,就比如拿我们现在项目来说,查询用户数据列表,直接在开发者服务器数据库获取,我只要验证这个用户是否存在即可。而什么时候需要验证session_key是否有效呢,比如我需要根据session_key来解析用户敏感数据,这个时候session_key必须有效,否则拿不到数据。

相关文章
|
1月前
|
开发工具 数据安全/隐私保护 UED
Uniapp 微信登录流程解析
Uniapp 微信登录流程解析
111 0
|
9天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的销售项目流程化管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的销售项目流程化管理系统附带文章源码部署视频讲解等
25 3
|
23天前
|
小程序 开发者
小心你的小程序被清退!小程序备案全流程攻略
小心你的小程序被清退!小程序备案全流程攻略
63 1
|
29天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp微信小程序的工作流程管理系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的工作流程管理系统的详细设计和实现
|
16天前
|
缓存 小程序 前端开发
【微信小程序】wx.login实现用户登录
【微信小程序】wx.login实现用户登录
|
1月前
|
小程序 API 开发者
微信小程序授权登录流程以及应用到的API
微信小程序授权登录流程以及应用到的API
238 0
|
1月前
|
小程序
小程序的分包加载具体流程
小程序的分包加载具体流程
193 0
|
1月前
|
小程序 开发工具 UED
小程序分包的详细流程
小程序分包的详细流程
126 2
|
1月前
|
小程序 前端开发 持续交付
小程序全栈开发中的CI/CD流程与自动化部署
【4月更文挑战第12天】本文探讨了小程序全栈开发中的CI/CD流程和自动化部署,强调其在提升开发效率和代码质量上的重要性。持续集成和持续部署确保了代码的频繁集成与快速迭代。实践中,利用构建工具、测试框架和部署工具实现自动化,并借助代码审查工具保证代码质量。同时,注意安全性、性能和团队协作,以实现小程序的稳定运行和优质用户体验。
|
1月前
|
小程序 开发者
微信小程序发布流程
微信小程序发布流程
70 0

热门文章

最新文章