wx-h5-demo: 顶部新增「返回首页」6 个按钮 —— 演示身份怎么带过去 (demo v26092201)

按接入规范(box_app/docs/h5-auth-standard.md 第三节第 6 条同源身份缓存、
第五节第 6 条回首页不要裸跳)把这条路径做成可点的验证工具:

  ① goHome()                —— 规范推荐,库自己带身份
  ② 手拼 URL 带 openid/unionid —— 规范做法,身份放 query
  ③ 裸跳 /mama-box/(反例)      —— URL 无身份;靠同源缓存兜底通常仍认得
  ④ switchTab 回小程序首页壳    —— 宿主重新注入,最稳(仅 web-view 内)
  ⑤ 清同源缓存 + 裸跳           —— **复现线上 bug**:首页「身份不完整」且重试救不回
  ⑥ 清同源缓存 + goHome()       —— 证明 goHome 主动带身份、不依赖缓存

实现要点:
- 卡片放在页面顶部(.env 那行之后);新增一行只读展示 identity() 的 from/openid/unionid。
- ②③⑤ 用**同源相对地址**(location.origin + '/mama-box/'):同源缓存本来就只在本 origin
  有效,这样写与生产等价且可被其它挂载点复用;①⑥ 仍走库的 goHome()(绝对地址)——那正是要演示的 API。
- clearIdCache() 清完**不再**调 identity() 刷新展示:本页 URL 上还带着身份,"URL 优先"会立刻
  写回缓存,等于白清(本地实测踩过,⑤ 因此复现不出来)。
- dbg() 已镜像 console.log:这些按钮点下去就跳走,页内面板看不到日志。

本地同源验证(/wx-h5-demo + /mama-box 同一 origin、桩后端):②③⑥ 落地无「身份不完整」;
⑤ 落地**提示条 flex**(bug 复现);① 走库的 goHome() 带 ?openid= 落地正常。页面无 JS 异常。
This commit is contained in:
2026-09-22 21:52:16 +08:00
parent f4610db21b
commit 0399fd00ff
2 changed files with 121 additions and 1 deletions

View File

@@ -12,6 +12,25 @@
> 说明:场景2 的宿主页 `scenario2-host-page` 同时是场景1 授权后 redirectTo 的落地页(从 `globalData` 读结果拼 H5 url)。
## 返回首页 · 身份怎么带过去(2026-09-22 新增,页面顶部那张卡)
6 个按钮,用来验证「H5 返回首页」时身份怎么带过去、以及什么时候会丢:
| 按钮 | 做法 | 预期落地表现 |
| --- | --- | --- |
| ① | `wxAuth.goHome()` | 首页**认得你**(库自己带上身份,规范推荐) |
| ② | 手拼 URL 带 `openid/unionid` | 首页**认得你**(规范做法;身份放 query) |
| ③ | 裸跳 `/mama-box/`(**反例**) | URL 上没身份,但**同源缓存兜底**通常仍认得你 —— 那是兜底生效,不是这条跳法对 |
| ④ | `wx.miniProgram.switchTab('/pages/index/index')` | 回**小程序首页壳**,由宿主重新注入身份(最稳,仅 web-view 内可用) |
| ⑤ | 清同源缓存 + 裸跳 | **复现线上 bug**:首页出现「身份不完整」提示条,且**点重试也救不回** |
| ⑥ | 清同源缓存 + `goHome()` | 仍**认得你**(`goHome` 主动带身份,不依赖缓存) |
原理与硬约定见 `box_app/docs/h5-auth-standard.md` **第三节第 6 条**(同源身份缓存)与**第五节第 6 条**(回首页不要裸跳)。
⚠️ 缓存写在 `sessionStorage['mmbox.identity']`,**只在本 origin 内有效**(本页与 mama-box 同在 `mp.yizhezhe.com`);
外链域名的应用读不到,必须自己带身份。
⚠️ 点下去就 `location.href` 跳走,**页内调试面板看不到日志**(随页面销毁)——`dbg()` 已镜像到 `console.log('[dbg]', …)`,
真机上看 console 或用上面的 `[wxAuth]` 日志。
## 文件
```
wx-h5-demo/