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

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

登录流程

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

  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月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
111 7
|
26天前
|
人工智能 弹性计算 搜索推荐
打造个性化的微信公众号AI小助手:从人设到工作流程
在数字化时代,一个有个性且功能强大的AI小助手能显著提升用户体验。本文档指导如何在微信公众号上设置AI小助手“小智”,涵盖其人设、功能规划及工作流程设计,旨在打造一个既智能又具吸引力的AI伙伴。
|
18天前
|
小程序 前端开发 算法
|
23天前
|
Java API 开发者
Java如何实现企业微信审批流程
大家好,我是V哥。本文分享如何在企业微信中实现审批流程,通过调用企业微信的开放API完成。主要内容包括获取Access Token、创建审批模板、发起审批流程和查询审批结果。提供了一个Java示例代码,帮助开发者快速上手。希望对你有帮助,关注V哥爱编程,编码路上同行。
|
30天前
|
机器学习/深度学习 人工智能 小程序
【一步步开发AI运动小程序】三、运动识别处理流程
随着人工智能技术的发展,阿里体育等公司推出的“乐动力”、“天天跳绳”等AI运动APP备受关注。本文将引导您从零开始开发一个AI运动小程序,使用“云智AI运动识别小程序插件”。文章介绍了视频帧、帧率FPS、抽帧和人体识别等基本概念,并详细说明了处理流程,包括抽帧、人体识别检测、骨骼图绘制和运动分析等步骤。下篇将介绍如何在小程序中实现抽帧。
|
1月前
|
小程序
微信小程序的注册流程
微信小程序的注册流程
75 0
|
3月前
|
小程序 前端开发 持续交付
小程序全栈开发中的CI/CD流程与自动化部署是一种高效的开发模式。
本文探讨小程序全栈开发中的CI/CD流程与自动化部署,介绍持续集成与部署的概念,包括自动化构建、测试、代码审查及部署实践。通过提高代码质量、迭代速度及团队协作效率,确保小程序稳定运行与良好用户体验。
87 2
|
3月前
|
前端开发 JavaScript API
微信公众号项目,实现微信支付(具体流程和参数)
微信公众号项目,实现微信支付(具体流程和参数)
|
4月前
|
小程序 开发工具 开发者
知识付费教育小程序搭建的流程及技术要点
【知识付费教育小程序】兴起于知识经济时代,旨在提供高质量知识服务。开发涉及定位受众、技术选型(如微信小程序)、功能设计(课程展示、购买、进度跟踪)、内容更新及用户体验优化。推广与运营,包括社交媒体宣传、会员体系构建、积分激励及持续优化,确保用户增长与留存。
|
4月前
|
存储 小程序 数据库
拉货搬家服务小程序如何开发?拉货搬家服务小程序制作流程
随着现代社会的发展,拉货搬家已经成为人们生活中不可避免的一部分。然而,繁琐的拉货搬家过程往往会让人感到沮丧和压力。为了解决这个问题,开发一款拉货搬家服务小程序就显得尤为重要。这个小程序可以帮助用户轻松下单拉货搬家服务,让拉货搬家更加便捷高效。