From 932e42e050bf683c067139c0607cd05583e6f9ed Mon Sep 17 00:00:00 2001 From: Karlcarlo Date: Sun, 20 Sep 2026 23:08:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E8=BA=AB=E4=BB=BD):=20=E5=AE=BF=E4=B8=BB?= =?UTF-8?q?=E6=9C=AA=E6=B3=A8=E5=85=A5=20openid=20=E6=97=B6=E7=BB=99?= =?UTF-8?q?=E5=87=BA=E5=8F=AF=E8=A7=81=E6=8F=90=E7=A4=BA=20+=20jumpApp=20?= =?UTF-8?q?=E5=B8=A6=20=5F=5Fno=5Fidentity=20=E6=A0=87=E8=AE=B0=20(v260920?= =?UTF-8?q?08)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景(2026-09-20 线上排查):小程序首页壳拿不到 openid 时会**匿名加载**本页, 页面照常渲染但全是占位(孕周 `--`、档案查不到),而跳应用时 jumpApp 因为没有身份 就跳**裸 URL** —— 从商城返回首页加载本页时很容易被误判成「数据丢了」。 根因在小程序侧(App.vue 丢掉无 token 分支的 openid;首页壳没有像 web_view 那样的 silenceAuthNoLogin 兜底),H5 这侧先做**可见 + 可观测**两件缓解: · 新增顶部提示条(#idNotice):仅在没有 openid 时显示,文案「未获取到微信身份, 页面数据可能不完整」;带「重试」按钮(location.replace 换 URL 重载,重试过一次后 文案升级为「请退出小程序后重新进入」,状态落 sessionStorage,活过那次跳转)。 有身份加载时(applyRemoteProfile 拿到 openid)自动隐藏。 ⚠️ 刻意不做自动轮询/自动 reload:宿主只在它自己重设 web-view src 或 onShow 时注入身份, 页面自己刷同一 URL 并不会让身份出现,反而可能循环。 · jumpApp():一个身份都没有时显式带 `__no_identity=1` —— 目标应用能区分「宿主没注入身份」 与「参数被平台丢了」,nginx/后端日志里也能一眼查到(排查 openid 为空的关键指纹)。 验证(本地代理 + 浏览器):访客态提示可见且默认文案正确;有 openid 时隐藏; 点重试后 URL 变 `?t=…`、提示仍在且文案升级;点宫格:无身份 → `…/?__no_identity=1`, 有身份 → `?openid=…&unionid=…`(无标记);卡片/红点/资源库 8 份/弹窗/我的页/tab 顺序 全部回归正常,errors 与 console 为空。 --- index.html | 13 +++++++++++- js/app.js | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++- mama-box.css | 21 +++++++++++++++++++ 3 files changed, 90 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 7b3f91a..c661173 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ 兜爸心选 · 孕育陪伴 - + @@ -16,6 +16,17 @@
+ +
+ + 未获取到微信身份,页面数据可能不完整 + +