微信小程序登录问题(思路简略笔记)

news2025/1/18 18:44:09

配置问题

这是小程序登录问题,必要的两个配置。

流程思路

1.  微信小程序端,会返回一个code。

 2. 查看需要返回给微信小程序端的数据。

3. 既然需要返回三个数据,先看openid如何拿到

WX-Login   = https://api.weixin.qq.com/sns/jscode2session

 原来如此,可以看到,它根据AppId 和 密钥 ,前端发送的唯一标识,和固定的type类型,分装成map之后,发送了一个请求,解析出来json拿到了openid!。

4. token令牌

    @PostMapping("/login")
    @ApiOperation("微信登录")
    public Result<UserLoginVO> login(@RequestBody UserLoginDTO userLoginDTO) {
        log.info("微信用户登录", userLoginDTO.getCode());
        System.out.println("登录凭证....................................."+userLoginDTO.getCode());

        // 微信登录
        User user = userService.wxLogin(userLoginDTO);

        // 为微信用户生成JWT令牌
        HashMap<String, Object> clamis = new HashMap<>();
        clamis.put(JwtClaimsConstant.USER_ID, user.getId());
        String token = JwtUtil.createJWT(jwtProperties.getUserSecretKey(), jwtProperties.getUserTtl(), clamis);

        UserLoginVO userLoginVO = UserLoginVO.builder()
                .id(user.getId())
                .openid(user.getOpenid())
                .token(token)
                .build();

        System.out.println("返回参数............................."+userLoginVO.toString());

        return Result.success(userLoginVO);
    }
    public User wxLogin(UserLoginDTO userLoginDTO) {
        // 调用微信接口服务,获得当前微信用户的openid
        String openid = getOpenid(userLoginDTO.getCode());
        System.out.println("查看返回的微信用户id"+openid);
        //判断openid是否为空,如果为空表示登录失败,抛出业务异常

        if (openid == null) {
            throw new LoginFailedException(MessageConstant.LOGIN_FAILED);
        }


        // 判断当前用户是否为新用户
        User user = userMapper.getByOpenid(openid);
        System.out.println("新用户前..........................."+user.toString());
        // 如果是新用户,自动完成注册
        if (user == null) {
            user = User.builder()
                    .openid(openid)
                    .createTime(LocalDateTime.now())
                    .build();
            userMapper.insert(user);
        }
        System.out.println("新用户:......................"+user.toString());
        // 返回这个用户对象

        return user;
    }

user类:根据前端code拿到用户(如果没有先注册!)

openid :那么首先wxLogin()方法,里面封装的数据里面有openid的值。

token 令牌规则:  appid, 密钥 ,用户id  加密而成

id: user类中获得!

最后要返回的数据封装成userLoginVO类,发送到小程序,完成微信登录!

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

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

相关文章

C高级 Shell脚本

一、作业&#xff1a;写一个shell脚本&#xff0c;将以下内容放到脚本中 在家目录下创建目录文件&#xff0c;dir在dir下创建dir1和dir2把当前目录下的所有文件拷贝到dir1中&#xff0c;把当前目录下的所有脚本文件拷贝到dir2中把dir2打包并压缩为dir2.tar.xz再把dir2.tar.xz移…

2023-9-10 集合-Nim游戏

题目链接&#xff1a;集合-Nim游戏 #include <iostream> #include <cstring> #include <algorithm> #include <unordered_set>using namespace std;const int N 110, M 10010;int n, m; int s[N], f[M];int sg(int x) {if(f[x] ! -1) return f[x];//…

QT实战之翻金币游戏【未完待续】

文章目录 目录 文章目录 前言 二、创建项目 三、添加资源 四、主界面实现 1、设置游戏主场景配置 2、设置背景图片 3、创建开始按钮 总结 前言 对QT的相关知识与控件进行简单的学习之后&#xff0c;通过实现“翻金币游戏”来巩固与实践所学的QT知识。在制作过程中是根据以下视…

打开游戏显示xinput1_3.dll丢失怎么办?xinput1_3.dll最全修复方法分享

一、xinput1_3.dll 文件总体介绍 xinput1_3.dll 是 Microsoft DirectX 中的一个动态链接库文件&#xff0c;它主要负责处理游戏手柄、鼠标、键盘等输入设备的操作。当运行支持 DirectX 的游戏或程序时&#xff0c;xinput1_3.dll 文件会被操作系统加载到内存中&#xff0c;以提…

想要精通算法和SQL的成长之路 - 课程表II

想要精通算法和SQL的成长之路 - 课程表 前言一. 课程表II &#xff08;拓扑排序&#xff09;1.1 拓扑排序1.2 题解 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 课程表II &#xff08;拓扑排序&#xff09; 原题链接 1.1 拓扑排序 核心知识&#xff1a; 拓扑排序是专…

Sharding-JDBC分库分表-自定义分片算法-4

默认分片算法 Sharding JDBC通过org.apache.shardingsphere.sharding.spi.ShardingAlgorithm接口定义了数据分片算法&#xff0c;5.2.1版本默认提供了如下的分片算法 配置标识自动分片算法详细说明类名MODY基于取模的分片算法ModShardingAlgorithmHASH_MODY基于哈希取模的分片…

JavaFX下载

下载地址&#xff1a; https://gluonhq.com/products/javafx/

postman和node.js的使用

一 nodejs下载 下载链接&#xff1a; nodejs官网&#xff1a; https://nodejs.org/zh-cn/download 我使用的windows .msi安装方式&#xff0c;双击一直下一步就行 当前安装完成后的版本&#xff1a;1.下载 2.安装步骤 下载完成后&#xff0c;双击安装包&#xff0c;开始安装&…

在MAC电脑上将NTFS格式移动硬盘转换为ExFAT格式

注意&#xff1a;转化之前先将移动硬盘中的内容进行备份 1、点击桌面上的【前往】&#xff0c;选择【实用工具】 2、在列表中选择【磁盘工具】 3、在左侧选中你的磁盘&#xff0c;点击右侧上方的【抹掉】,注意&#xff1a;将永久抹掉储存在上面的所有数据&#xff0c;因此需要…

计算机毕业设计 JSPM校园闲置物品交易平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

分类预测 | Matlab实现基于LFDA-SVM局部费歇尔判别数据降维结合支持向量机的多输入分类预测

分类预测 | Matlab实现基于LFDA-SVM局部费歇尔判别数据降维结合支持向量机的多输入分类预测 目录 分类预测 | Matlab实现基于LFDA-SVM局部费歇尔判别数据降维结合支持向量机的多输入分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于局部费歇尔判别数据降维的L…

Ubuntu下高效Vim的搭建(离线版)

软件界面 可以看到界面下方有一些常用提示信息&#xff1a;文件路径、format、文件类型、光标所在的坐标(x,y)、进度条(百分比)、日期时间 会提示已定义的变量名词(快速补全) 搭建方法 下载资源文件 把Vim 和 .vimrc 拷贝到家目录下&#xff0c;并执行tar -xvf Vim 即可。 …

汇川PLC学习Day3:轴控代码编写、用户程序结构说明与任务配置示例、用户变量空间与编址

汇川PLC学习Day3&#xff1a;轴控代码编写、用户程序结构说明与任务配置示例、用户变量空间与编址 一、新建轴与轴控代码编写 1. 新建轴 (1)新建一个轴 &#xff08;2&#xff09;将轴名字更新为实际名字 可以后面实例化后再更改&#xff0c;汇川可以在更新名字时同步更新…

使用DeepSpeed加速大型模型训练(二)

使用DeepSpeed加速大型模型训练 在这篇文章中&#xff0c;我们将了解如何利用Accelerate库来训练大型模型&#xff0c;从而使用户能够利用DeeSpeed的 ZeRO 功能。 简介 尝试训练大型模型时是否厌倦了内存不足 (OOM) 错误&#xff1f;我们已经为您提供了保障。大型模型性能非…

倒⽴摆闭环控制的设计与开发

倒立摆是一种典型的多变量、高阶次、非线性、强耦合、自然不稳定系统&#xff0c;常被用来检验新的控制理论和算法的正确性及其在实际应用中的有效性。 load func_ip_comp% Locations of Poles and Zeroes of Open-Loop Compensated Transfer Function in Complex Plane figur…

查看当前所有的数据库

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 先看下服务有没有启动,看下我这个是什么意思 exit 退出MySQL环境回车后是这样的 重新进入MySQL环境 查看当前所有的数据库 show datebases; mysql&…

nrf523832 串口点LED

/* P0.06&#xff1a;串口发送TXD P0.08&#xff1a;串口接收RXD P0.05&#xff1a;串口RTS&#xff1a;发送请求&#xff0c;硬件流控开启时有效 P0.07&#xff1a;串口CTS&#xff1a;发送允许&#xff0c;硬件流控开启时有效 */ #define RX_PIN_NUMBER 8 #define TX_PIN_N…

学习Bootstrap 5的第十天

目录 卡片 基础的卡片 实例 页眉和页脚 实例 多种颜色卡片 实例 标题、文本和链接 实例 图片卡片 实例 卡片图像叠加 实例 下拉菜单 基础的下拉列表 实例 下拉列表分隔线 实例 下拉列表标题 实例 禁用的和活动的项目 实例 下拉列表位置 实例 下拉菜单…

SpringMVC之文件的上传下载(教你如何使用有关SpringMVC知识实现文件上传下载的超详细博客)

目录 前言 一、文件上传 1. 配置多功能视图解析器&#xff08;spring-mvc.xml&#xff09; 2. 添加文件上传页面&#xff08;upload.jsp&#xff09; upload.jsp 3.做硬盘网络路径映射 4. 编写一个处理页面跳转的类 PageController.java ClazzController.java 5. 初步模…

【数据分享】STRM 90米分辨率DEM地形数据(无需转发/全国/分省/分市)

地形数据是我们在各种设计、研究中都经常使用的基础数据&#xff01;之前我们分享过12.5米精度的DEM地形数据、30米精度的DEM地形数据(均可查看之前的文章获悉详情&#xff09;。 本次给大家带来的是90米分辨率的DEM地形数据——STRM 90m高程数据&#xff01;该数据是由美国太…