微信小程序登录鉴权

news2024/12/26 14:50:56

小程序使用微信登录态进行授权登录

 1、调用wx.login生成code

wx.login()这个API的作用为当前用户生成一个临时的登录凭证,这个临时登录凭证有效期只有5分钟。拿到登录凭证后就可进行下一步操作,获取openid和session_key

Taro.login().then((res) => {
        if (res.code) {
          const { code } = res
          getAuthCode({ code: res.code, appId: getGlobalData('appId') }).then((res) => {
            // TODO code有效期只有五分钟,不一定存缓存?
            setGlobalData('session', { ...res.data, code })
          })
        }
      })

2、 获取openId和sessionKey

openId,标识每个用户在订阅号、服务号、小程序三种不同应用的唯一标识。每个用户在每个应用的openId都是不一致的,所以在小程序里,我们可以用openid来标识用户的唯一性

appId是微信小程序的应用标识,即application Identification,每个小程序都会有一个appId,跟人的身份证一样

session_key需要在我们自己的服务端请求微信的第三方接口,这个接口需要加上四个参数字段

参数
appid小程序的appid
secret小程序的secret
js_code前面调用wx.login派发的code
grant_type'authorization_code'
const authPhoneFn = (params) => {
  getAuthPhone(params).then((res) => {
    if (res.code === 0) {
      const params = {
        ...res.data,
        grant_type: 'wechat-miniapp',
        scope: 'server',
      }
      authTokenFn(params)
    }
  })
}

从这几个参数,我们可以看出,要请求这个接口必须先调用wx.login()来获取到用户当前会话的code。那么为什么我们要在服务端来请求这个接口呢?其实是出于安全性的考量,如果我们在前端通过request调用此接口,就不可避免的需要将我们小程序的appid和小程序的secret暴露在外部,同时也将微信服务端下发的session_key暴露给“有心之人”,这就给我们的业务安全带来极大的风险。除了需要在服务端进行session_key的获取,我们还需要注意两点:

  1. session_key和微信派发的code是一一对应的,同一code只能换取一次session_key。每次调用wx.login() ,都会下发一个新的code和对应的session_key,为了保证用户体验和登录态的有效性,开发者需要清楚用户需要重新登录时才去调用wx.login()
  2. session_key是有失效性的,即便是不调用wx.login,session_key也会过期,过期时间跟用户使用小程序的频率成正相关,但具体的时间长短开发者和用户都是获取不到的

3、checkSession

验证登录态

 4、

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132542.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java:基于注解对类实例字段进行通用校验

前言 后台服务处理前端的请求时,会有这样的一种需求,即校验请求中的参数是否符合校验规则。校验参数是否符合的一种方法是,罗列请求参数,基于校验规则一个一个的校验参数,如果存在不符合的,就返回字段值不…

第20章 离差

第20章 离差 20.1 马尔可夫定理 一般来说,马尔可夫定理能够粗略估计一个随机变量的值等于一个比它的平均值大得多的值的概率。 例子:IQ的平均值是100。我们可以得到:最多1/3的人IQ可以达到300及以上,因为如果IQ>300的人超过…

基于情感词典、k-NN、Bayes、最大熵、SVM的情感极性分析及对比,含数据集

完整代码下载地址:基于情感词典、k-NN、Bayes、最大熵、SVM的情感极性分析及对比,含数据集 1、预处理 (1)、特征提取 对应文件:feature_extraction.py 最后结果: X^2值前几名的词语。能看出这些词都是一…

喜报丨武汉无名创新科技有限公司荣获国家“高新技术企业”证书,将助力高校科研与竞赛无人机产业加速发展!

2022年11月03日,高新技术企业认定管理官网公告了湖北省2022年第一批通过认定的高新技术企业名单,武汉无名创新科技有限公司(简称“无名创新”)榜上有名,证书编号为GR202242000480。“国家高新技术企业”认定是对无名创…

Java 并发编程知识总结【二】

3. 阻塞队列与线程池 3.1 阻塞队列 阻塞:必须要阻塞/不得不阻塞 阻塞队列是一个队列,在数据结构中是先进先出 线程1往阻塞队列里添加元素,线程2从阻塞队列里移除元素。 当队列是空的,从队列中获取元素的操作将会被阻塞 当队列…

OASIS协议标准文档的解读_第二部分

8 CELL REFERENCING 8.1 跟GDSII文件一样, 在OASIS文件中, cells也是用名字来标识的。一个CELL record不仅要包括一个cell的定义,还要包括它的名字。 PLACEMENT record根据cell的名字来指定cell的放置位置。跟GDSII一样,在OASIS中没有匿名的c…

APP应用渗透测试思路

今天继续给大家介绍渗透测试相关知识,本文主要内容是APP应用渗透测试思路。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权…

vue后台系统管理项目-echarts柱状图实现订单统计

echarts柱状图实现订单统计 主要功能 不同订单状态切换显示不同的柱状图数据;根据条件切换选择年度视图、月度视图;根据条件切换指定年份、指定月份显示当前的数据;根据搜索条件查询查看柱状图数据;柱状图数据导出功能&#xff0c…

C#,核心基础算法——完整全面、简单易用、稳定可靠的统计学常用算法之原理介绍、算法精粹与完整的源代码

1、统计学常用算法 统计分析科学 在“政治算术”阶段出现的统计与数学的结合趋势逐渐发展形成了“统计分析科学”。 十九世纪末,欧洲大学开设的“国情纪要”或“政治算数”等课程名称逐渐消失,代之而起的是“统计分析科学”课程。当时的“统计分析科学”…

MongoDB:安装配置

MongoDB有两个服务器版本 :MongoDB 社区版 和 MongoDB 企业版。此篇主要介绍 MacOS 下 MongoDB 社区版的安装,在 “版本” 下拉列表中,选择要下载的 MongoDB 版本;在平台下拉列表中,选择 MacOS。在包下拉列表中&#x…

mysql一主双从环境搭建--docker-compose

mysql一主双从环境搭建–docker-compose 一、工作目录结构 ├── cluster01 │ ├── msql-master01 │ │ └── volumes │ │ ├── conf │ │ │ └── my.cnf │ │ ├── data │ │ ├── initdb │ │ │ …

基础数学(六)——非线性方程求根的数值解法

文章目录期末考核方式求解的一般步骤二分法求根二分法计算样例二分法的优缺点不动点迭代法全局收敛准则收敛性证明样例局部收敛性收敛阶数的定义迭代法具体例题(考试必考)牛顿迭代法例题(使用牛顿法近似目标解)(考过&a…

Gem5模拟器,FS模式运行自定义程序(九)

FS模拟和SE模拟最大的区别是:FS模拟会启动Linux操作系统,会模拟系统的所有组件。因此需要给系统配置相应的Linux内核以及磁盘镜像,镜像文件作为Linux系统的文件系统。在FS模拟下,使用gem5自带的python脚本configs/example/fs.py。…

从umati 看德国人如何玩OPCUA的

到目前为止,机器的联网标准缺乏统一的协议和语义标准。比较知名的要数每个的MTConnect。fanuc机床的focas协议。未来的发展方向是OPCUA协议。但是实现这个目标并非一日之功。德国的umati 社区也许给我们一些启发。 为了推进机床行业的数字化进程,VDW&…

从2022看2023年发展趋势

前言 时光荏苒,回望即将过去的2022年,前端领域在这一年中整体还是保持平稳向前,但对整个IT产业链路及互联网行业来说,变化还是很大的,下面我将简单分享一下个人对整个行业领域的一些观点与思考。鄙人才疏学浅&#xf…

Linux | 从头开始理解Linux以及工作日常常用命令

Linux的版本 分很多种,家庭用途版本有:Linux Mint、Ubuntu、OpenSUSE、Fedora、PC-BSD;商业用途版本有:Debian、RHEL、CentOS;还有其他版本:FreeBSD、OpenBSD、Solaris、OpenSolaris等。 目录 1.操作系统…

QT学习 控件(三)输入文本类与快捷键:QPlainText;QKeySequenceEdit

文章目录QPlainTextQKeySequenceEdit前情回顾: QLineEit QTextEdit文本输入类 QPlainTextEdit是一个简略版本的类,它的性能优于QTextEdit, 主要是因为在文本文档中使用QPlainTextDocumentLayout简化文本布局 QPlainText QPlainText和QTextEdit大致功能…

Dijkstra求最短路(堆优化)

给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值。 请你求出 1 号点到 n 号点的最短距离,如果无法从1 号点走到 n 号点,则输出 −1。 输入格式 第一行包含整数 n 和 m。 接下来 m 行每行包含三个整…

力扣刷题记录——205.同构字符串、217. 存在重复元素、283. 移动零

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《205.同构字符串、217. 存在重复元素、283. 移动零》。 目…

(十四)大白话磁盘文件中, 40个bit位的数据头以及真实数据是如何存储的?

文章目录 1、前情回顾2、详解40个bit位数据头1、前情回顾 之前我们已经给大家讲到了在磁盘上存储数据的时候, 每一行数据都会有变长字段长度列表,逆序存放这行数据里的变长字段的长度,然后会有NULL值列表,对于允许为NULL的字段都会有一个bit位标识那个字段是否为NULL,也是…