feat: 增加 wechat_login=success 参数处理

This commit is contained in:
zdl
2025-11-26 14:52:49 +08:00
parent 037471d880
commit 87437ed229

View File

@@ -37,20 +37,40 @@ export default function WechatCallback() {
// 1. 获取URL参数 // 1. 获取URL参数
const code = searchParams.get("code"); const code = searchParams.get("code");
const state = searchParams.get("state"); const state = searchParams.get("state");
const wechatLogin = searchParams.get("wechat_login");
// 2. 参数验证 // 2. 检查是否是 H5 模式登录成功回调
// 后端已经完成登录,只需要刷新前端 session 状态
if (wechatLogin === "success") {
logger.info('WechatCallback', 'H5 模式登录成功', { state });
// 刷新 session 状态
await checkSession();
// 显示成功状态
setStatus("success");
setMessage("登录成功!正在跳转...");
// 延迟跳转到首页
setTimeout(() => {
navigate("/home", { replace: true });
}, 1000);
return;
}
// 3. 原有的 code 模式处理(微信直接回调前端的情况)
if (!code) { if (!code) {
throw new Error("授权失败:缺少授权码"); throw new Error("授权失败:缺少授权码");
} }
// 3. 调用后端处理回调 // 4. 调用后端处理回调
const response = await authService.handleWechatH5Callback(code, state); const response = await authService.handleWechatH5Callback(code, state);
if (!response || !response.success) { if (!response || !response.success) {
throw new Error(response?.error || "授权失败,请重试"); throw new Error(response?.error || "授权失败,请重试");
} }
// 4. 存储用户信息如果有返回token // 5. 存储用户信息如果有返回token
if (response.token) { if (response.token) {
localStorage.setItem("token", response.token); localStorage.setItem("token", response.token);
} }
@@ -58,14 +78,14 @@ export default function WechatCallback() {
localStorage.setItem("user", JSON.stringify(response.user)); localStorage.setItem("user", JSON.stringify(response.user));
} }
// 5. 更新session // 6. 更新session
await checkSession(); await checkSession();
// 6. 显示成功状态 // 7. 显示成功状态
setStatus("success"); setStatus("success");
setMessage("登录成功!正在跳转..."); setMessage("登录成功!正在跳转...");
// 7. 延迟跳转到首页 // 8. 延迟跳转到首页
setTimeout(() => { setTimeout(() => {
navigate("/home", { replace: true }); navigate("/home", { replace: true });
}, 1500); }, 1500);
@@ -73,6 +93,7 @@ export default function WechatCallback() {
logger.error('WechatCallback', 'handleCallback', error, { logger.error('WechatCallback', 'handleCallback', error, {
code: searchParams.get("code"), code: searchParams.get("code"),
state: searchParams.get("state"), state: searchParams.get("state"),
wechat_login: searchParams.get("wechat_login"),
errorMessage: error.message errorMessage: error.message
}); });
setStatus("error"); setStatus("error");