Files
core/.workbuddy/memory/2026-04-11.md
赵忠林 5b3363d1ae feat(wx): 实现小程序码生成自动重试机制
- 在生成小程序码时增加首次失败后清理缓存并重试的逻辑
- 新增强制刷新 access_token 的方法 getAccessTokenForcibly
- 优化了获取 access_token 失败的日志提示,不再在错误时清理缓存
- 移除生成小程序码接口对 token 错误时清理缓存的判断及操作
- 移除异常时清理缓存的代码,避免误删除有效缓存
- 调整二维码请求参数,移除注释的颜色配置代码
2026-04-11 09:02:20 +08:00

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 - 微信登录控制器

影响范围

  • 扫码登录生成小程序码
  • 小程序手机号授权登录