微信小程序内嵌webview实现微信登录

839 阅读1分钟

背景:

项目要求微信小程序快速开发,3天后要上线实在是来不及了。所以用了微信小程序的壳子嵌入H5的方式开发。利用了最新的方式web-view的方式将内容src嵌入。

	<web-view src="https://xxx.xxx.com/"></web-view>

交互流程

【登陆】

h5触发小程序登陆,拿到小程序的openId/unionId,【MpOpenId】;
  1. h5页面通过后端接口拿 【Token】
  2. h5跳转到小程序的/pages/WxMpLogin/index?Token=${Token}
  3. 微信小程序Api获取用户登录成功的code
    • wx.login() 是微信小程序提供的一个 API,用于获取用户登录凭证(code)。
  4. 调用后端接口拿openId,后端会存储openId
    • 通过传值{Token,code}
  5. h5通过Token轮询登陆结果, 接口:轮询状态

核心:页面交互通过后端接口获取数据、存储数据,轮询状态

end--写入登录成功的cookie 跳转首页

=============重点=============

踩坑:web-view 内嵌H5页面和微信小程序传参 通过url拼接无效(哈希模式不刷新)

详解:在单页应用(SPA)中,更改哈希值只会触发浏览器的hashchange事件,但不会触发页面刷新。这是因为哈希模式下的URL变化只会改变URL的哈希部分,不会发送新的HTTP请求,因此不会引起页面刷新。这种特性被SPA充分利用,用来实现页面的无刷新切换

方案二

web-view绑定的地址改为history模式或将参数拼接在#之前

例如:xxx.com/?orderId=17…

方案一

用后端接口存储数据,h5页面通过接口获取