1.钉钉修复跳转问题

This commit is contained in:
zjf committed 2026-09-21 15:00:19 +08:00
1 parent 4dac32d89c
commit c8ec9c4d08
5 files changed
+37 -14

No files matched your search

+3 -3
View File
@@ -5,13 +5,13 @@ import {
getWechatPcRedirectUri,
isLocalDevOrigin,
parseWechatOAuthState,
PC_DING_BIND_TICKET_KEY,
type WechatPcAction,
} from '/@/utils/wechat-pc';
export const SOCIAL_TYPE_DINGTALK = 'DINGTALK';
export { PC_DING_BIND_TICKET_KEY };
/** 钉钉登录(未绑定)扫码后暂存 ticket,登录页弹窗绑定 */
export const PC_DING_BIND_TICKET_KEY = 'pc_ding_bind_ticket';
export const SOCIAL_TYPE_DINGTALK = 'DINGTALK';
export type DingTalkPcAction = 'LOGIN' | 'SETTINGS';
+12 -5
View File
@@ -14,6 +14,8 @@ export const PC_WX_PWD_TICKET_KEY = 'pc_wx_pwd_ticket';
export const PC_WX_CONFIRM_TICKET_KEY = 'pc_wx_confirm_ticket';
/** 微信登录(未绑定)扫码后暂存 ticket,登录页弹窗绑定 */
export const PC_WX_BIND_TICKET_KEY = 'pc_wx_bind_ticket';
/** 钉钉登录(未绑定)扫码后暂存 ticket,登录页弹窗绑定(与 dingtalk-pc 共用) */
export const PC_DING_BIND_TICKET_KEY = 'pc_ding_bind_ticket';
/** 弹窗内扫码登录/确认成功后通知父页面 */
export const PC_WX_AUTH_DONE_KEY = 'pc_wx_auth_done';
/** 弹窗扫码登录成功后,把 token 写入 localStorage 供父页面接管(Cookie 在弹窗场景下不可靠) */
@@ -233,12 +235,17 @@ export function clearWechatGateMarkers() {
localStorage.removeItem(PC_WX_TOKEN_PAYLOAD_KEY);
}
/** 是否存在微信/钉钉首次绑定 ticket */
export function hasSocialBindTicket(): boolean {
return !!(localStorage.getItem(PC_WX_BIND_TICKET_KEY) || localStorage.getItem(PC_DING_BIND_TICKET_KEY));
}
export function notifyWechatAuthError(message: string) {
const payload = JSON.stringify({ message, ts: Date.now() });
writeStorageKey(PC_WX_AUTH_ERROR_KEY, payload);
}
/** 轮询 token;弹窗关闭、已写入 token 或存在微信绑定 ticket 时回调 */
/** 轮询 token;弹窗关闭、已写入 token 或存在微信/钉钉绑定 ticket 时回调 */
export function pollWechatAuthDone(
win: Window | null,
onSuccess: () => void,
@@ -271,7 +278,7 @@ export function pollWechatAuthDone(
localStorage.removeItem(PC_WX_AUTH_ERROR_KEY);
return;
}
if (localStorage.getItem(PC_WX_BIND_TICKET_KEY)) {
if (hasSocialBindTicket()) {
window.clearInterval(timer);
onSuccess();
return;
@@ -286,7 +293,7 @@ export function pollWechatAuthDone(
if (
Cookies.get('token') ||
Session.getToken() ||
localStorage.getItem(PC_WX_BIND_TICKET_KEY) ||
hasSocialBindTicket() ||
(localStorage.getItem(PC_WX_AUTH_DONE_KEY) || '') !== authDoneBaseline
) {
done();
@@ -295,7 +302,7 @@ export function pollWechatAuthDone(
}
if (Date.now() - started > maxMs) {
window.clearInterval(timer);
onError?.('微信授权超时,请重试');
onError?.('授权超时,请重试');
}
}, 500);
return () => window.clearInterval(timer);
@@ -314,7 +321,7 @@ export function finishWechatAuthRedirect(hasToken: boolean) {
window.close();
return;
}
const needBind = !hasToken && !!localStorage.getItem(PC_WX_BIND_TICKET_KEY);
const needBind = !hasToken && hasSocialBindTicket();
window.location.href = hasToken ? '/' : needBind ? '/#/login?wxPcBind=1' : '/#/login';
}