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