微信小程序登录流程理解

这篇具有很好参考价值的文章主要介绍了微信小程序登录流程理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

小程序官网里面会提到一个小程序的登录逻辑,下面是微信登录的整个过程,官方提供的图片。

微信小程序登录流程理解

 

 官方流程的个人理解:

1.小程序启动

2.小程序通过wx.login获取微信的 code,然后将这个 code 发送给开发者服务器(我们自己的开发服务器)

3.开发者服务器接收到code 之后,小程序服务端拿到code去微信服务器换取获取真正需要的微信用户的登录态session_key和 openid 和 unionid

        a.准确来说session_key才是真正的微信登录态信息,但是把 openid 和 unionid加起来一起理解,也可以笼统地理解为这些都是微信的登录态信息。

4.然后需要开发者服务器自己生成一个自定义的登录态(例如业务 token或者 session)来保存这些微信服务器返回来的微信登录态相关信息(session_key和 openid 和 unionid),并且做关联处理,然后返回给小程序客户端。

  • 关联处理就是你的自定义登录态和微信的登录态相关联,这样的话就不需要维护多个登录态,只需要维护一个就可以了。
  • 关联处理之后需要将这个自定义登录态信息保存起来,可以放到数据库或者本地文件或者 例如 redis 之类的缓存服务里面,以便方便后续使用,而不需要每次都请求微信服务器(微信服务器对这个请求的频率是有限制的)
  • 注意这里不返回微信登录态相关信息,只返回自定义的登录态信息。
  • 自定义登录态的信息不仅可以包含 token,也可以包含一些用户权限信息,或者其他信息,因为是自定义的登录态,维护也是很自定义的。
  • 一般自定义的登录态的超时时长需要比微信的登录态要长。

 5.小程序客户端接收到返回的自定义登录态信息,从而判断用户是否登录成功,登录成功的话,就将自定义登录态信息保存到本地的存储。  

  • 本地的存储可以是微信小程序提供的 app.globaldata,也可以是 localstoage,注意,小程序不支持 cookie
  • 保存到本地存储的好处就是,后续使用的这个自定义登录态就不需要再次跟服务器进行交互来获取了,只需要调用本地存储就行了,这里是为了优化性能和避免浪费资源

6.小程序客户端访问业务接口的时候,携带之前保存到本地存储的自定义登录态信息进行对开发者服务器(业务接口服务器)访问

7.开发者服务器的业务接口接收到请求,并且请求里面携带了自定义的登录态,通过校验之后,会返回相关信息

  • 校验是将小程序客户端携带过来的自定义登录态和开发者服务器缓存起来的自定义登录态进行对比,会去确认是否和用户的 openid或者 unionid 和 session_key 相匹配。
  • 如果匹配,就可以马上返回相关信息。
  • 如果不匹配,就可以马上返回相关信息,告知小程序客户端无法访问业务接口。
  • 如果匹配结果是自定义登录态超时了,就可以马上返回相关信息,告知小程序客户端需要重新运行登录逻辑
  • 如果是匹配结果是自定义登录态没有超时,但是微信登录态超时了,那么就会开发者服务器就会再次发起code2Session进行微信登录态更新。

上面的图里面的一些术语解释:

code 是微信用户的临时的登录凭证,有效时间五分钟,为了后续生成一个微信登录态 session_key而使用的;

session_key 是微信用户在小程序里面的登录态信息,这是微信给这个用户颁发的一个登录 session

openId ,用户在微信里面的唯一标识,但是需要跟 unionid 进行一起理解;

unioinId,如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。

  • 一般来说,openId 就是微信用户的唯一标识,但是因为微信产品很多,所以会出现多个微信产品使用不同的 openId 来标识用户,但是对于我们做业务接入的话,就买办法使用了,所以建议是统一使用 unioinid,因为一般来说,一般的业务都会有公众号,小程序联合使用的,所以 unionid 使用频率较高。

3rd_session 是一般是指开发者服务器的登录态,也就是自定义登录态,也就是我们自己公司的业务服务器的登录态(微信官方推荐使用自定义登录态来管理整个微信小程序登录)。

示例代码如下:

 wxlogin(){
         wx.login({
           success:(data) => {

             if(data.code){
               wx.request({
                url: 'https://test.com/login', //请求接口
                method: 'POST',
                data: {//需要传递的参数
                    'captcha': 1234,
                    'mobile': 13148435812,
                    'code': data.code //用户的code
                },
                success(res) {//服务器返回来的数据
       
                    if (res.statusCode != 200) {
                        return wx.showToast({
                          title: '请求失败',
                        })
                    }
                    wx.setStorageSync('key', res.data.data.access_token); //本地存储token
                    wx.switchTab({
                        url:'/pages/home/home'
                    })
                    console.log( wx.getStorageSync('key'));
                    return wx.showToast({
                      title: '登录成功',
                    })
                }
               })
             }
           }
         })

参考文档:

小程序开发-梳理登录流程-v1.0 - SegmentFault 思否

教程 | 《小程序开发指南》文章来源地址https://www.toymoban.com/news/detail-487409.html

到了这里,关于微信小程序登录流程理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序登录流程与实现

    在了解小程序登录之前,请大家先了解小程序的全局实例和全局组件,以方便理解本文的后续内容,已经了解的可以直接开始。 全局实例和全局组件( 👈 点击直达) 微信小程序的登录流程 微信小程序的登录 首先需要写一个微信小程序的登录弹窗,登录弹窗的作用就是发起

    2024年02月16日
    浏览(30)
  • 【微信小程序】授权登录流程解析

      目录 微信授权登录流程 1. 官方图示流程详解 2. 代码登录流程拆解 2.1 前端代码示例讲解 2.2 后端代码示例讲解 2.3 代码登录流程拆解 🌟 3. 表情包存储展示(扩展) 附议  ① 微信服务器验证: 当用户打开小程序时,小程序会向用户展示登录按钮,用户点击登录按钮后,小

    2024年02月08日
    浏览(32)
  • 说说微信小程序的登录流程?

    传统的 web 开发实现登陆功能,一般的做法是输入账号密码、或者输入手机号及短信验证码进行登录 服务端校验用户信息通过之后,下发一个代表登录态的 token 给客户端,以便进行后续的交互,每当 token 过期,用户都需要重新登录 而在微信小程序中,可以通过微信官方提供的

    2024年02月20日
    浏览(32)
  • 微信小程序的登录流程——代码详解

    小程序登录流程图(具体详情可看官网链接): https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。 前端开发者需要做的任务是从小程序到开发者服务器

    2024年02月09日
    浏览(34)
  • 微信小程序三种授权登录以及授权登录流程讲解

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《 微信小程序开发实战 》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你

    2024年02月08日
    浏览(37)
  • 微信小程序&会议OA-登录获取手机号流程&登录-小程序&导入微信小程序SDK(从微信小程序和会议OA登录获取手机号到登录小程序导入微信小程序SDK)

    目录 获取用户昵称头像和昵称 wx.getUserProfile bindgetuserinfo 登录过程 登录-小程序 wx.checkSession wx.login wx.request 后台 准备数据表 反向生成工具生成 准备封装前端传过来的数据 小程序服器配置 导入微信小程序SDK application.yml WxProperties WxConfig WxAuthController 登录-小程序 login.js user.j

    2024年02月04日
    浏览(36)
  • 微信小程序登录流程(包含前端、后端代码)

    在微信小程序的开发过程中,如果想要保留 用户 的 数据 (比如: 操作记录 、 购物车信息 等等)就必须要 用户 登陆。为什么呢?比如说,数据库中有一条 数据 你如何知道这条数据属于谁?属于那个用户呢?这就需要用户登录来获取 用户 的 唯一标识 从而确定这条数据是属

    2024年02月03日
    浏览(34)
  • mpVue 微信小程序授权登录流程(即登录鉴权流程)及获取手机号一键登录教程(getPhoneNumber使用)

    微信小程序登录 鉴权流程 如下: 因 wx.getUserProfile 与 wx.getUserInfo 接口被收回了,都不能弹出授权窗口,只能使用头像昵称填写能力去获取微信用户信息。 在鉴权页面如下操作 : 1、在 onShow 中调用微信登录 wx.login 获取到唯一的code(用来获取 openid ); 2、根据 wx.login 获取的c

    2024年02月12日
    浏览(49)
  • 微信小程序第五节——登录那些事儿(超详细的前后端完整流程)

    📌 微信小程序第一节 ——自定义顶部、底部导航栏以及获取胶囊体位置信息。 📌 微信小程序第二节 —— 自定义组件 📌 微信小程序第三节 —— 页面跳转的那些事儿 📌 微信小程序第四节—— 网络请求那些事儿 😜 作           者 :是江迪呀 ✒️ 本文 : 微

    2024年02月09日
    浏览(31)
  • SpringCloud微服务实战——搭建企业级开发框架:第三方登录-微信小程序授权登录流程设计和实现

      在前面的设计和实现中,我们的微服务开发平台通过JustAuth来实现第三方授权登录,通过集成公共组件,着实减少了很多工作量,大多数的第三方登录直接通过配置就可以实现。而在第三方授权登录中,微信小程序授权登录和APP微信授权登录是两种特殊的第三方授权登录

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包