fix(portable): 微信扫码重定向/Telegram botToken/Windows 启动端口 (v2.1.11)
- 微信扫码卡死: config-server 跟随 IDC scaned_but_redirect 把后续轮询切到 redirect_host,刷新二维码时重置 pollBaseUrl(扫码后不再卡住等不到 confirmed)。新增测试。 - Telegram 渠道改用 botToken(顶层 telegram 只认 botToken,旧 token 别名被静默忽略 → 连不上)。 - Windows-Start: 先起 config-server 再探测 gateway 端口,从 runtime.json 读实际 configServerPort 并按该端口开 Config Center / 传给 wait-gateway(18788 被占也能开)。 - wait-gateway.bat: 用 ping 代替 timeout /t(避开 PATH 上 GNU coreutils timeout 冲突),接受 CONFIG_PORT 参数。 - Windows-Menu: IF 块内 echo 的 () 转义为 ^(^),修 v2.1.10 闪退回归。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -246,7 +246,13 @@ async function handleWeChatStatus(sessionKey) {
|
||||
return { status: 'expired', message: 'Session expired' };
|
||||
}
|
||||
|
||||
const result = await pollWeChatQrStatus(login.apiBaseUrl, login.qrcode);
|
||||
// 状态轮询用 pollBaseUrl(IDC 重定向后会指向新主机);二维码获取/刷新始终用原始
|
||||
// apiBaseUrl(与官方插件一致:refresh 回到固定主机,只有 status 轮询跟随重定向)。
|
||||
const result = await pollWeChatQrStatus(login.pollBaseUrl || login.apiBaseUrl, login.qrcode);
|
||||
// 微信登录状态流转日志(跳过高频的 wait,便于排查"扫码卡死"类问题)。
|
||||
if (result.status && result.status !== 'wait') {
|
||||
console.log(`[wechat] status=${result.status}` + (result.redirect_host ? ` redirect_host=${result.redirect_host}` : ''));
|
||||
}
|
||||
|
||||
if (result.status === 'expired') {
|
||||
// Try to refresh QR code
|
||||
@@ -261,6 +267,8 @@ async function handleWeChatStatus(sessionKey) {
|
||||
login.qrcode = refreshed.qrcode;
|
||||
login.qrcodeUrl = newQr;
|
||||
login.startedAt = Date.now();
|
||||
// 新二维码来自原始主机,重置轮询主机,避免拿新码去轮询旧的重定向主机。
|
||||
login.pollBaseUrl = null;
|
||||
return { status: 'refreshed', qrcodeUrl: newQr };
|
||||
}
|
||||
|
||||
@@ -302,6 +310,18 @@ async function handleWeChatStatus(sessionKey) {
|
||||
};
|
||||
}
|
||||
|
||||
// IDC 重定向:用户扫码后,ilink 服务端可能要求把后续轮询切换到另一个数据中心主机
|
||||
// (status=scaned_but_redirect + redirect_host)。必须跟着切,否则一直轮询旧主机,
|
||||
// 扫码后永远等不到 confirmed——表现为「扫了码却卡死不前进」。
|
||||
// 同款逻辑见官方插件 openclaw-weixin/src/auth/login-qr.ts 的 scaned_but_redirect 分支。
|
||||
if (result.status === 'scaned_but_redirect') {
|
||||
if (result.redirect_host) {
|
||||
login.pollBaseUrl = 'https://' + result.redirect_host;
|
||||
}
|
||||
// 对前端按「已扫码」处理:显示提示并继续轮询,下一轮已指向新主机。
|
||||
return { status: 'scaned' };
|
||||
}
|
||||
|
||||
return { status: result.status };
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user