fix(weixin): 二维码改用 qrcode 原始标识串生成——qrUrl(liteapp页面)编码不能被微信识别
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled

把 qrUrl(liteapp HTML页面URL)编码成二维码,微信扫它当普通链接打开→页面不认→'过期'。
改用 qrcode 原始标识串生成二维码(get_qrcode_status 轮询的 key, 微信扫码后解析), 并保留
qrUrl 作为'在微信/浏览器打开扫码页'的备用链接。build/部署。
This commit is contained in:
Aska committed 2026-09-07 21:51:30 +08:00
1 parent a9dfae4d5f
commit b6b258498c
1 file changed
+16 -3
@@ -41,6 +41,7 @@ export function WeixinLogin({
}): React.ReactNode {
const log = useAuditStore((s) => s.log);
const [status, setStatus] = useState<string>("idle");
const [qrCode, setQrCode] = useState<string>("");
const [qrUrl, setQrUrl] = useState<string>("");
const [botId, setBotId] = useState<string>("");
const [busy, setBusy] = useState<string | null>(null);
@@ -86,10 +87,12 @@ export function WeixinLogin({
const start = () => {
setBusy("__qr__");
setNotice(null);
setQrCode("");
setQrUrl("");
adminWeixinLoginQR(platform, accountId)
.then((r) => {
log("channel.weixin.login.qr", "ok");
setQrCode(r.qrCode ?? "");
setQrUrl(r.qrUrl ?? "");
if (r.status === "confirmed") {
setStatus("confirmed");
@@ -117,7 +120,7 @@ export function WeixinLogin({
.finally(() => setBusy(null));
};
const showQR = status === "waiting" || qrUrl !== "";
const showQR = status === "waiting" || qrCode !== "";
return (
<Surface gap="sm" className="space-y-3">
@@ -144,11 +147,21 @@ export function WeixinLogin({
{showQR ? (
<div className="space-y-2">
{qrUrl ? (
<QrImage value={qrUrl} />
{qrCode ? (
<QrImage value={qrCode} />
) : (
<Notice tone="warn">二维码暂不可用,请点击「刷新二维码」重试。</Notice>
)}
{qrUrl ? (
<a
href={qrUrl}
target="_blank"
rel="noreferrer"
className="text-xs text-[var(--mu-accent-hi)] underline"
>
若上方码不识别,点此在微信/浏览器打开扫码页
</a>
) : null}
<p className="text-xs text-[var(--mu-text-lo)]">请用微信扫描上方二维码,确认后自动连接(最多等待约 8 分钟)。</p>
</div>
) : null}