🔥 8 年 Java 老兵揭秘:靠 TRAE SOLO,3 小时搞定 Spring Boot 微信登录
🚀 标签:Spring Boot、OAuth2、微信登录、Java后端、实战经验
📌 项目背景:使用 Spring Boot 实现微信扫码登录
🧠 作者:天天摸鱼的java工程师
🧠 前言:一个工程师的“自我挑战”
作为一个写了 8 年 Java 的后端,我一直擅长做接口、搞业务逻辑、撸数据库。但最近一个新需求,让我犯了难:
“我们需要接入微信扫码登录,用在后台管理系统中。”
我心想,微信登录这玩意怎么这么复杂?还得:
- 搭建授权回调接口
- 获取 access_token
- 拉取用户信息
- 和我们系统用户打通
以前我可能要花上几天时间啃文档、踩坑调试。但这次,我决定换个方式:
用我最近在用的开发工具 SOLO 来帮我快速集成。
🎯 项目目标
使用 Spring Boot 完成微信扫码登录流程,并实现与系统用户绑定。
功能清单:
- 扫码后跳转微信授权
- 授权成功后回调接口处理 code
- 获取 access_token 和 openid
- 拉取用户微信信息
- 登录成功后生成 JWT 返回前端
🧱 技术栈
| 技术 | 用途 |
|---|---|
| Spring Boot 2.7.x | 主体框架 |
| RestTemplate | 请求微信 API |
| OAuth2 + JWT | 登录认证 |
| 微信开放平台 API | 授权登录 |
| MAVEN | 构建管理 |
| TRAE SOLO | 任务结构化 + 代码生成 + 流程辅助 |
🧩 开发流程回顾
整个开发过程我拆分了几个关键步骤,每一步都做了任务记录,理清思路后再动手。
✅ 步骤1:配置微信开放平台应用
这一步绕不开,得提前去微信开放平台:
- 创建网站应用
- 配置授权回调域名,如
https://yourdomain.com/api/wechat/callback - 拿到 AppID 和 AppSecret
我把这一步记录在 SOLO 的任务备注中,方便团队同步。
✅ 步骤2:定义微信扫码链接生成逻辑
微信登录第一步是跳转用户去扫码页面,这段链接格式是固定的:
https://open.weixin.qq.com/connect/qrconnect
?appid=APPID
&redirect_uri=REDIRECT_URI
&response_type=code
&scope=snsapi_login
&state=STATE#wechat_redirect
我封装成一个工具方法:
public String buildLoginUrl(String redirectUri) {
return "https://open.weixin.qq.com/connect/qrconnect"
+ "?appid=" + appId
+ "&redirect_uri=" + URLEncoder.encode(redirectUri, "UTF-8")
+ "&response_type=code"
+ "&scope=snsapi_login"
+ "&state=" + UUID.randomUUID().toString()
+ "#wechat_redirect";
}
💡 这里 SOLO 自动提醒我:redirect_uri 必须 URL 编码,否则回调会失败。
✅ 步骤3:编写回调接口,处理微信返回的 Code
扫码成功后,微信回调我们的接口,并携带 code 和 state。
我写了一个 Controller:
@GetMapping("/api/wechat/callback")
public ResponseEntity<?> wechatCallback(@RequestParam String code) {
// 1. 用 code 换取 access_token
// 2. 获取 openid 和用户信息
// 3. 查找或创建本地用户
// 4. 返回登录结果
}
SOLO 帮我梳理了调用微信 API 的顺序和字段含义,也生成了部分接口调用结构。
✅ 步骤4:调用微信 API 获取 AccessToken 和用户信息
微信的两个关键接口:
- 获取 access_token:
https://api.weixin.qq.com/sns/oauth2/access_token - 获取用户信息:
https://api.weixin.qq.com/sns/userinfo
我使用 RestTemplate 调用:
String url = "https://api.weixin.qq.com/sns/oauth2/access_token"
+ "?appid=" + appId
+ "&secret=" + appSecret
+ "&code=" + code
+ "&grant_type=authorization_code";
Map<String, Object> tokenResult = restTemplate.getForObject(url, Map.class);
然后用 access_token + openid 拉用户信息。
✅ 步骤5:生成 JWT 并绑定本地用户
拿到微信 openid 后,我就去查我们系统的用户表:
- 若存在用户:直接生成 JWT 登录
- 若不存在:创建新用户记录,绑定 openid
生成 JWT 的逻辑我用现有的工具类封装好了:
String token = jwtService.generateToken(userId);
return ResponseEntity.ok(Map.of("token", token));
🧪 测试体验
在本地测试时我使用了 Ngrok 将本地服务映射到公网,让微信回调接口能访问:
ngrok http 8080
扫码登录流程体验如下:
- 用户点击“微信登录”
- 跳转微信扫码页
- 扫码授权 → 微信回调
- 后端处理 → 登录成功
- 前端收到 JWT → 自动跳转首页
一套流程跑下来,顺滑如丝。
🧠 总结:为什么我推荐你也试试这种开发方式?
这次开发体验最让我满意的不是“写了多少代码”,而是:
我能把注意力放在业务逻辑和系统设计上,琐碎的流程交给工具辅助完成。
🚀 TRAE SOLO 在这个项目中帮了我什么?
| 功能 | 帮助 |
|---|---|
| 任务拆解 | 清晰规划每一步流程 |
| 流程建议 | 提示微信 OAuth 的参数、回调注意事项 |
| 结构生成 | Controller、工具类、接口封装加速 |
| 参数命名 | 避免踩坑,字段命名统一规范 |
| 文档提示 | 快速跳转微信开发文档,查接口不用找半天 |
📌 最后
这次我用不到一天时间就完成了微信扫码登录的集成。作为一个写了 8 年 Java 的工程师,我越来越意识到:
工程效率,不在于你会写多少代码,而在于你能不能用好工具,写对的代码。
如果你也在做类似的集成类开发,不妨试试这套流程,把开发变成真正的工程组织过程,而不仅是“码农体力活”。