Commit Graph

7 Commits

Author SHA1 Message Date
06f76b4df4 feat(身份): 同源身份缓存兜底 —— H5「返回首页」裸跳不再丢 openid/unionid (v26092212)
问题(实测孕检日历,第三方应用):页面里的「返回首页」是**页面自己发起的同源跳转**,
宿主的 <web-view src> 属性没变 → _applyIdentity() 不触发 → mama-box 的 URL 上没有身份
→ 只能显示「身份不完整」;而 retryIdentity() 只是 location.replace(自己 + 缓存戳),
同一条没有身份的 URL 重载,**永远救不回来**。而且该应用会主动把 openid/phone 从自己的
URL 上擦掉(防分享链接冒名,理由见它的注释)—— 所以那一跳**不可能**带上身份。

做法(方案已与产品确认;在架 12 个应用实测全在 mp.yizhezhe.com,同源共享 storage):
- js/wx-auth.js:新增 identity()(URL 优先 → 同源 sessionStorage 兜底,命中缓存打一条
  日志便于排查)、rememberIdentity()、goHome();并在**库载入时自动采一次**身份 ——
  接入方无需改代码,只要引了本库(孕检日历就引了,且它是绝对地址 + ETag 兜底,
  我们改库即可自动生效),宿主注入过的身份就会被存下来。
- js/app.js:hashParam() 对 openid/unionid 两键加同样的缓存回落(其余参数不受影响)。

三条纪律(写在 wx-auth.js 顶部,改前先读):
① URL 永远权威:URL 带 openid 就无条件覆盖缓存(否则切号/换人会串号);
② 只在本 origin 有效:外链应用读不到,所以「跳转要带身份」的规范不能删,缓存只兜底;
③ 只存 openid/unionid(身份键),不碰 token/手机号/昵称头像。
选 sessionStorage 而非 localStorage:同一次会话内够用,且随标签页结束即失效,暴露窗口小。

验证(本地同源:/app 模拟第三方页 + /mama-box 同一 origin):
  模拟应用页自动写缓存 → 裸跳 /mama-box/ → 提示条不显示、日志出现、按缓存身份拉数据;
  回归:无缓存且无身份 → 提示条照旧显示(fail-closed 保留);URL 带身份 → 缓存被写下且不显示提示条。
2026-09-22 21:36:52 +08:00
d39e52cf4f 授权回传确定性修复:requestProfile/goAuth 跳授权页时把当前 H5 地址作 backUrl 带给授权页(navigateTo query 通道,不赌 postMessage 派发时机);版本 v26091901 2026-09-19 16:55:42 +08:00
627a819e46 底tab「兜爸心选」/「进入商城」落点改商城首页:小程序原装装修首页已恢复为 pages/index/mall(DIY 底部导航第2项),goMall 改 switchTab 该页并补 fail 提示;首页新增今日脚印(数胎动对外 API,box_app 封装,拉不到回退内置);版本 v26091802 2026-09-18 21:12:49 +08:00
f99a4d59eb mama-box: 接入共享 wx-auth.js,首屏/换页向小程序宿主上报 location(分享卡片深链同步);版本 bump v26091602 2026-09-17 21:34:27 +08:00
7868556042 wx-auth/wx-h5-demo: 授权与商城跳转加 fail 兜底提示; 修环境标签恒显「纯浏览器」; 调试面板转发 navigateTo/switchTab fail (demo v26090901) 2026-09-09 18:41:13 +08:00
0598f5b566 共享库 goMall 加环境判定矩阵(与授权同款): 非webview提示「请在小程序中打开商城」; demo加switchTab埋点 (v26090810) 2026-09-08 10:52:13 +08:00
f7691c540f 共享库移到 /mama-box/js/wx-auth.js, 最终地址带版本参数 (v26090805) 2026-09-08 10:26:51 +08:00