feat: 增加 wechat_login=success 参数处理
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user