- 新增支持指定租户ID的微信登录相关接口 - 添加获取AccessToken和登录接口的重载版本 - 更新文档,增加租户支持相关说明 - 修改内部方法,支持指定租户ID参数
3.2 KiB
3.2 KiB
微信登录接口租户支持文档
概述
为了支持多租户场景,我们为微信登录相关接口添加了支持指定租户ID的重载版本。这样可以在跨租户场景下灵活使用微信登录功能。
新增接口
1. 获取AccessToken(支持租户ID)
接口地址: POST /api/wx-login/getAccessToken/{tenantId}
参数:
tenantId:租户ID(路径参数)
示例:
curl -X POST "http://localhost:8080/api/wx-login/getAccessToken/123"
2. 微信授权手机号码并登录(支持租户ID)
接口地址: POST /api/wx-login/loginByMpWxPhone/{tenantId}
参数:
tenantId:租户ID(路径参数)- 请求体:UserParam对象
示例:
curl -X POST "http://localhost:8080/api/wx-login/loginByMpWxPhone/123" \
-H "Content-Type: application/json" \
-d '{
"code": "登录凭证code",
"authCode": "手机号授权code",
"openid": "微信openid(可选)"
}'
兼容性
原有接口保持不变
所有原有的接口都保持不变,确保向后兼容:
POST /api/wx-login/getAccessToken- 使用当前租户IDPOST /api/wx-login/loginByMpWxPhone- 使用当前租户ID
内部方法重载
我们添加了以下内部方法的重载版本:
getAccessToken(Integer tenantId)- 支持指定租户ID获取AccessTokengetPhoneByCode(UserParam userParam, Integer tenantId)- 支持指定租户ID获取手机号addUserWithTenant(UserParam userParam, Integer tenantId)- 支持指定租户ID注册用户
使用场景
场景1:管理员代理操作
管理员需要为特定租户的用户进行微信登录操作:
// 前端代码
wx.login({
success: (loginRes) => {
wx.getPhoneNumber({
success: (phoneRes) => {
wx.request({
url: '/api/wx-login/loginByMpWxPhone/123', // 指定租户ID
method: 'POST',
data: {
code: loginRes.code,
authCode: phoneRes.code
}
});
}
});
}
});
场景2:跨租户数据同步
在数据同步或迁移场景下,需要为不同租户获取AccessToken:
// 后端代码示例
String tenant1Token = getAccessToken(123);
String tenant2Token = getAccessToken(456);
注意事项
- 租户ID验证:系统会验证传入的租户ID是否有效
- 权限控制:确保调用者有权限操作指定租户的数据
- 缓存隔离:不同租户的AccessToken会分别缓存,互不影响
- 错误处理:如果指定的租户ID无效,会返回相应的错误信息
错误码
| 错误码 | 说明 |
|---|---|
| 40001 | 租户ID无效 |
| 40002 | 无权限操作指定租户 |
| 40029 | 微信授权码无效或过期 |
最佳实践
- 前端处理:建议前端分别获取登录code和手机号code,避免code重复使用
- 错误重试:当遇到40029错误时,提示用户重新授权
- 日志记录:系统会记录详细的操作日志,便于问题排查
- 租户隔离:确保不同租户的数据完全隔离
更新日志
- 2024-12-19:添加租户支持功能
- 2024-12-19:修复openid获取失败的问题
- 2024-12-19:增强错误处理和日志记录