- 在生成小程序码时增加首次失败后清理缓存并重试的逻辑 - 新增强制刷新 access_token 的方法 getAccessTokenForcibly - 优化了获取 access_token 失败的日志提示,不再在错误时清理缓存 - 移除生成小程序码接口对 token 错误时清理缓存的判断及操作 - 移除异常时清理缓存的代码,避免误删除有效缓存 - 调整二维码请求参数,移除注释的颜色配置代码
1.0 KiB
1.0 KiB
2026-04-11 工作日志
扫码登录 access_token 自动恢复机制
问题背景
WX_ACCESS_TOKEN:{tenantId}缓存过期后,微信 API 返回 40001/42001 等错误- 之前需要手动删除 Redis 缓存才能恢复
解决方案
实现了 access_token 自动清理和重试机制:
1. QrLoginServiceImpl 改动
generateMiniprogramQrCode()添加重试逻辑- 首次失败 → 清理缓存 → 重试
- 新增
doGenerateMiniprogramQrCode()私有方法
2. WxService 新增方法
getAccessTokenForcibly(tenantId)- 强制刷新 token- 先删除 Redis 缓存
- 直接从微信 API 获取新 token
3. WxLoginController 改动
getPhoneByCode()检测 token 相关错误时自动清理缓存- 新增
isTokenRelatedError()方法识别 40001/42001 等错误码
关键文件
QrLoginServiceImpl.java- 扫码登录服务WxService.java- 微信公共服务WxLoginController.java- 微信登录控制器
影响范围
- 扫码登录生成小程序码 ✅
- 小程序手机号授权登录 ✅