背景:
项目要求微信小程序快速开发,3天后要上线实在是来不及了。所以用了微信小程序的壳子嵌入H5的方式开发。利用了最新的方式web-view的方式将内容src嵌入。
<web-view src="https://xxx.xxx.com/"></web-view>
交互流程
【登陆】
h5触发小程序登陆,拿到小程序的openId/unionId,【MpOpenId】;
- h5页面通过后端接口拿 【Token】
- h5跳转到小程序的/pages/WxMpLogin/index?Token=${Token}
- 微信小程序Api获取用户登录成功的code
wx.login()
是微信小程序提供的一个 API,用于获取用户登录凭证(code)。
- 调用后端接口拿openId,后端会存储openId
- 通过传值{Token,code}
- h5通过Token轮询登陆结果, 接口:轮询状态
核心:页面交互通过后端接口获取数据、存储数据,轮询状态
end--写入登录成功的cookie 跳转首页
=============重点=============
踩坑:web-view 内嵌H5页面和微信小程序传参 通过url拼接无效(哈希模式不刷新)
详解:在单页应用(SPA)中,更改哈希值只会触发浏览器的hashchange事件,但不会触发页面刷新。这是因为哈希模式下的URL变化只会改变URL的哈希部分,不会发送新的HTTP请求,因此不会引起页面刷新。这种特性被SPA充分利用,用来实现页面的无刷新切换
方案二
web-view绑定的地址改为history模式或将参数拼接在#之前
方案一
用后端接口存储数据,h5页面通过接口获取