背景: 在小程序中使用web-view使用react,需要调用相关JSSDK的接口配置, IOS能正常使用,安卓却签名错误invalid signature
基础配置按照官方文档来, 这里说明下配置注意事项:
引入微信jssdk,wx.config所用到的工具函数,appid 要使用公众号的APPID,如果APPID使用的是小程序的APPID,config时会报签名无效,要注意config签名参数的大小写
在公众号里面配置,js安全域名配置成web-view的域名
以上配置成功后, 在IOS中使用都能正常使用, 却在安卓机器上使用签名失败invalid signature, 硬是没在网上找到相关解决方案, 很多都是安卓使用正常, IOS使用异常.
煎熬两天综合了其他问题,经过尝试终于通了,记录一下解决方案, 希望帮助遇到同样问题的人
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
// web-view进入react的第一时间, index.html时记录url
if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {
window.entryUrl = location.href.split('#')[0];
}
</script>
// 发送给后端签名时 这里就需要区分了!!
let isAnd = /(Android)/i.test(navigator.userAgent); //安卓终端
let url = isAnd ?
encodeURIComponent(window['entryUrl']) :
encodeURIComponent(location.href.split('/?')[0]);
分析:
- 我这里进入web-view的地址是
https://dev.xxx.com?openId=xxx&token=xxxx
- 然后进入默认路由页面url已经变成
https://dev.xxx.com/workbench?appkey=xxx
SPA 的router路由机制,在安卓和ios的不同, jssdk url签名的
ios只认第一次的路由,我只需要传第一次路由给后端就行