From 87437ed229f8b9fa358933a685beed06d1052575 Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Wed, 26 Nov 2025 14:52:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=20wechat=5Flogin=3Ds?= =?UTF-8?q?uccess=20=E5=8F=82=E6=95=B0=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Pages/WechatCallback.js | 33 +++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/views/Pages/WechatCallback.js b/src/views/Pages/WechatCallback.js index 552e8165..b0395f90 100644 --- a/src/views/Pages/WechatCallback.js +++ b/src/views/Pages/WechatCallback.js @@ -37,20 +37,40 @@ export default function WechatCallback() { // 1. 获取URL参数 const code = searchParams.get("code"); 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) { throw new Error("授权失败:缺少授权码"); } - // 3. 调用后端处理回调 + // 4. 调用后端处理回调 const response = await authService.handleWechatH5Callback(code, state); if (!response || !response.success) { throw new Error(response?.error || "授权失败,请重试"); } - // 4. 存储用户信息(如果有返回token) + // 5. 存储用户信息(如果有返回token) if (response.token) { localStorage.setItem("token", response.token); } @@ -58,14 +78,14 @@ export default function WechatCallback() { localStorage.setItem("user", JSON.stringify(response.user)); } - // 5. 更新session + // 6. 更新session await checkSession(); - // 6. 显示成功状态 + // 7. 显示成功状态 setStatus("success"); setMessage("登录成功!正在跳转..."); - // 7. 延迟跳转到首页 + // 8. 延迟跳转到首页 setTimeout(() => { navigate("/home", { replace: true }); }, 1500); @@ -73,6 +93,7 @@ export default function WechatCallback() { logger.error('WechatCallback', 'handleCallback', error, { code: searchParams.get("code"), state: searchParams.get("state"), + wechat_login: searchParams.get("wechat_login"), errorMessage: error.message }); setStatus("error");