From 44a3545bbbfdb945c938500e05140f5fa02bf388 Mon Sep 17 00:00:00 2001 From: liuwei Date: Thu, 7 May 2026 14:53:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3864=E6=9C=AA=E6=89=AB?= =?UTF-8?q?=E7=A0=81=E9=98=B6=E6=AE=B5=E7=9A=84=E7=99=BB=E5=BD=95=E5=BC=95?= =?UTF-8?q?=E5=AF=BC=E6=96=87=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wechat_ipad/providers/server_864/runtime.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/wechat_ipad/providers/server_864/runtime.py b/wechat_ipad/providers/server_864/runtime.py index 5ff7a44..b68d903 100644 --- a/wechat_ipad/providers/server_864/runtime.py +++ b/wechat_ipad/providers/server_864/runtime.py @@ -269,7 +269,18 @@ class Server864RuntimeMixin: # 2. 结合服务端源码,这类 `state=4` 更接近终态/失效态,而不是可继续等待的中间态; # 3. 因此这里把它单独识别出来,避免 Dashboard 长时间卡在“等待安全验证”的旧文案。 raw_status_text = str(login_status.get("msg") or login_status.get("loginState") or "").strip() - if raw_state == 4: + if raw_state == 0: + # 864 有时会把上一轮登录留下的 VerificationUrl 一起带回来: + # 1. 但当 `raw_state=0` 时,真实含义仍然是“当前二维码等待扫码”; + # 2. 若继续优先展示旧验证链接,前端就会出现“明明没扫却提示去安全验证”的误导; + # 3. 因此这里明确以原始状态为准,并主动忽略这类陈旧 VerificationUrl。 + provider_stage = "waiting_scan" if uuid else "login_required" + status = "waiting" + status_text = raw_status_text or "等待扫码登录" + verification_url = "" + nick_name = "" + head_img_url = "" + elif raw_state == 4: provider_stage = "login_required" status = "expired" if verification_url: @@ -297,7 +308,7 @@ class Server864RuntimeMixin: status = "waiting" status_text = raw_status_text or "等待扫码登录" - if verification_url and raw_state != 4 and not raw_status_text: + if verification_url and raw_state not in {0, 4} and not raw_status_text: status_text = "扫码已完成,请继续打开验证链接完成安全验证" await self._safe_callback(