Java 微信小程序登录(openId方式)
1 需求
在开发微信小程序项目时,登录采用的是openId方式,这是一种用户无感的登录方式,用户点开微信小程序时,去调用后端的登录接口。
核心代码
@Slf4j
@Component
public class WeChatUtil {private static final String xcxAppId = "xxx";private static final String xcxAppSecret = "xxx";public static JSONObject getSessionKeyOrOpenId(String code) {String url = "https://api.weixin.qq.com/sns/jscode2session";Map<String, String> params = new HashMap<>();params.put("appid", xcxAppId);params.put("secret", xcxAppSecret);params.put("js_code", code);params.put("grant_type", "authorization_code");return JSON.parseObject(HttpClientUtil.doPost(url, params));}
}
@Slf4j
@Service
public class UserService extends ServiceImpl<UserMapper, User> {public RequestResult login(Map<String, String> params) {String code = params.get("code");JSONObject weChatObject = WeChatUtil.getSessionKeyOrOpenId(code);String openId = weChatObject.getString("openid");if (StrUtil.isEmpty(openId)) {return RequestResult.fail("获取微信openid失败");}QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.eq("open_id", openId);User findUser = baseMapper.selectOne(queryWrapper);if (findUser != null) {findUser.setToken(JwtUtil.createTokenByUserIdOpenId(String.valueOf(findUser.getId()), openId));return RequestResult.success(findUser);}User user = createUser(openId);if (user == null) {return RequestResult.fail("用户信息初始化失败");}user.setToken(JwtUtil.createTokenByUserIdOpenId(String.valueOf(user.getId()), openId));return RequestResult.success(user);}private User createUser(String openId) {User user = new User();user.setOpenId(openId);user.setCreateTime(DateUtil.now());int result = baseMapper.insert(user);return result > 0 ? user : null;}
}
相关文章:
Java 微信小程序登录(openId方式)
1 需求 在开发微信小程序项目时,登录采用的是openId方式,这是一种用户无感的登录方式,用户点开微信小程序时,去调用后端的登录接口。 核心代码 Slf4j Component public class WeChatUtil {private static final String …...
为何程序员35岁就开始被嫌弃了?程序员该如何避免中年危机?
文章目录 一、为何程序员35岁就开始被嫌弃了?1、技术更新迅速2、职业发展瓶颈3、成本考虑4、年龄歧视5、市场供需变化6、个人因素 二、程序员该如何避免中年危机?1、持续学习与技能更新2、拓展技术广度与深度3、提升软技能4、关注行业趋势与市场变化5、建…...
【2024软考】史上最全!软考刷题+解析大合集(9万字全手工打,货真价实)
计算机基础知识 1.中断向量表用来保存各个中断源的中断服务程序的入口地址。当外设发出中断请求信号(INTR)以后,由中断控制器(INTC)确定其中断号,并根据中断号查找中断向量表来取得其中断服务程序的入口地…...
【Spring Security + OAuth2】授权
Spring Security OAuth2 第一章 Spring Security 快速入门 第二章 Spring Security 自定义配置 第三章 Spring Security 前后端分离配置 第四章 Spring Security 身份认证 第五章 Spring Security 授权 第六章 OAuth2 文章目录 Spring Security OAuth21、基于request的授权1…...
失落的方舟台服预下载教程 一键下载+账号注册教程
失落的方舟台服预下载教程 一键下载+账号注册教程 是一款今年备受瞩目的游戏,将于5月30日正式上线,这款游戏搭建在虚幻引擎的基础上,为玩家们带来了极佳的视觉体验。这款游戏秉承着MMO类型游戏一贯的玩法,但是制作组在…...
【启明智显技术分享】SOM2D02-2GW核心板适配ALSA(适用Sigmastar ssd201/202D)
提示:作为Espressif(乐鑫科技)大中华区合作伙伴及sigmastar(厦门星宸)VAD合作伙伴,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸…...
人工智能的发展现状,AI将如何改变IT行业,哪些职业将最先失业
文章目录 一、人工智能的发展现状1、技术进展与突破2、商业应用与市场3、挑战与问题4、未来趋势 二、AI将如何改变IT行业1、工作方式的转变:2、未来发展的推动:3、用户服务和体验的提升:4、创新和转型的推动:5、融入日常生活和工作…...
request.js使用Promise.all等待所有请求完成再进行数据赋值
在JavaScript中,使用request.js发送多个并发请求,并使用Promise.all来处理这些请求的结果可以通过以下方式实现: 首先,确保你已经安装了request.js,如果没有,可以通过npm安装: npm install re…...
Java开发者必知的时间处理工具:SimpleDateFormat类详解
哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…...
构造函数的用法
c 子类构造函数初始化及父类构造初始化_构造函数对父类进行初始化-CSDN博客...
环形链表Ⅱ-力扣
第一种解法时哈希表,set在使用insert插入时,会返回一个pair,如果pair的值为0,则插入失败,那么返回这个插入失败的节点,就是入环的第一个节点,代码如下: /*** Definition for singly…...
【microros】解决 microros安装过程中的 undefined reference to `fmt::v6 问题
目录 问题解决方案参考链接 问题 在 ubuntu-20 arm 开发板上根据官方文档手动编译安装 microros 过程中,执行 ros2 run micro_ros_setup build_agent.sh 命令时,遇到了 undefined reference to fmt::v6 的问题,大概报错如下: Yo…...
29. 相似矩阵,若尔当型
文章目录 1. 相似矩阵1.1 A T A A^TA ATA正定性证明 2. 相似矩阵2.1 举例2.2 证明相似矩阵具有相同特征值 1. 相似矩阵 假设矩阵A,B为正定矩阵,那么对于任意非零列向量x来说,二次型 x T A x , x T B x x^TAx,x^TBx xTAx,xTBx恒为正 x T A …...
【论文阅读】 YOLOv10: Real-Time End-to-End Object Detection
文章目录 AbstractIntroductionRelated WorkMethodologyConsistent Dual Assignments for NMS-free Training (无NMS训练的一致性双重任务分配)Holistic Efficiency-Accuracy Driven Model Design (效率-精度驱动的整体模型设计) …...
Python读写文件
最近得以空闲,然后继续学习py。 学习一下py中最频繁用到的文件读写的方法。 在py中,操作是通过文件对象【File obj】实现的,通过文件对象可以读写文本文件和一些二进制文件。 1.打开文件 使用Python中的open函数。有8个参数,但…...
docker-如何将容器外的脚本放入容器内,将容器内的脚本放入容器外
文章目录 前言docker-如何将容器外的脚本放入容器内,将容器内的脚本放入容器外、1. docker 如何将容器外的脚本放入容器内1.1. 验证 2. 将容器内的脚本放入容器外 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊&…...
算法训练营第三十九天 | LeetCode 738 单调递增的数字、LeetCode 968 监控二叉树
LeetCode 738 单调递增的数字 这题类似模拟,可以找出如下规律: 先将数字按位数从高位到低位存到一个整型数组中。在这个数组中,从左往右遍历,如果遇到一个两数相等,并且记录的这个变量之前没有赋过值,那么…...
Hive语法学习总结
Hive SQL语法学习总结 hive参数库操作1.创建库2.具体案例3.库的其他操作 表和库的路径演示表的操作创建表插入数据 hive参数 一 hive常用交互命令hive -e sql语句hive -f sql文件 //文件中是sql语句二 参数的设置方式一:在客户端中设置参数(当次有效)set 参数名参…...
【Linux】TCP协议【中】{确认应答机制/超时重传机制/连接管理机制}
文章目录 1.确认应答机制2.超时重传机制:超时不一定是真超时了3.连接管理机制 1.确认应答机制 TCP协议中的确认应答机制是确保数据可靠传输的关键部分。以下是该机制的主要步骤和特点的详细解释: 数据分段与发送: 发送方将要发送的数据分成一…...
solidworks画螺母学习笔记
螺母 单位mm 六边形 直径16mm,水平约束,内圆直径10mm 拉伸 选择两侧对称,厚度7mm 拉伸切除 画相切圆 切除深度7mm,反向切除 拔模角度45 镜像切除 倒角 直径1mm 异形孔向导 螺纹线 偏移打勾,距离为2mm…...
终极防休眠指南:Move Mouse免费工具完整使用教程
终极防休眠指南:Move Mouse免费工具完整使用教程 【免费下载链接】movemouse Move Mouse is a simple piece of software that is designed to simulate user activity. 项目地址: https://gitcode.com/gh_mirrors/mo/movemouse 你是否经常遇到这样的困扰&am…...
AI Coding越来越强,我们还有必要学Processing吗? · 创意编程运
故障表现 发现请求集群 demo 入口时卡住,并且对应 Pod 没有新的日志输出 rootce-demo-1:~# kubectl get pods -n deepflow-otel-spring-demo -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NO…...
GPT-6 Spud倒计时×AI格局变局:2026年4月第一周全景扫描
上一篇 OpenClaw生态模型使用量全景:国产模型主导12.96万亿Token时代 下一篇 GPT-6 Spud深度解析:Symphony架构、双系统推理与OpenAI的AGI豪赌 摘要 2026年4月第一周(3月31日至4月6日),AI行业迎来密集动态:…...
PowerToys屏幕标尺终极指南:免费高效的像素测量工具
PowerToys屏幕标尺终极指南:免费高效的像素测量工具 【免费下载链接】PowerToys Microsoft PowerToys is a collection of utilities that supercharge productivity and customization on Windows 项目地址: https://gitcode.com/GitHub_Trending/po/PowerToys …...
从串行到并行:构建一个可控加减法器的高效设计实践
1. 从串行到并行:加减法器的设计演进之路 记得我第一次接触加法器设计时,对着教科书上的串行电路图发呆了整整一个下午。那些密密麻麻的连线就像一团乱麻,完全看不出为什么这样连接就能实现加法运算。直到后来自己动手搭建了一个4位串行加法器…...
5个维度解析Bebas Neue:设计师与开发者的开源字体解决方案
5个维度解析Bebas Neue:设计师与开发者的开源字体解决方案 【免费下载链接】Bebas-Neue Bebas Neue font 项目地址: https://gitcode.com/gh_mirrors/be/Bebas-Neue 副标题:破解标题设计痛点——从视觉疲劳到品牌识别的全链路优化 在数字设计领域…...
原神桌面工具Snap.Hutao:数据管理与资源规划全方案
原神桌面工具Snap.Hutao:数据管理与资源规划全方案 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 🧰 / Multifunctional Open-Source Genshin Impact Toolkit 🧰 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.Hutao …...
EdgeConnect模型评估指南:PSNR、SSIM、FID指标全解析
EdgeConnect模型评估指南:PSNR、SSIM、FID指标全解析 【免费下载链接】edge-connect EdgeConnect: Structure Guided Image Inpainting using Edge Prediction, ICCV 2019 https://arxiv.org/abs/1901.00212 项目地址: https://gitcode.com/gh_mirrors/ed/edge-c…...
mPLUG VQA实战案例:农业科技中作物病害图识别+症状描述+防治建议生成
mPLUG VQA实战案例:农业科技中作物病害图识别症状描述防治建议生成 1. 项目背景与价值 在现代农业生产中,作物病害的早期识别和准确诊断是确保农作物健康生长的关键环节。传统的人工诊断方式依赖农业专家的经验判断,不仅效率低下࿰…...
REFramework:游戏启动崩溃问题的系统化解决方案
REFramework:游戏启动崩溃问题的系统化解决方案 【免费下载链接】REFramework Mod loader, scripting platform, and VR support for all RE Engine games 项目地址: https://gitcode.com/GitHub_Trending/re/REFramework 问题诊断:当游戏启动遇到…...
