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