Skip to content

Latest commit

 

History

History
14 lines (8 loc) · 1.42 KB

单页面.md

File metadata and controls

14 lines (8 loc) · 1.42 KB

解决单页面应用,微信js api权限配置失败的问题

背景:

最近用react+react router开发微信网页,在某个页面需要上传图片,遂使用了微信的js api。在通过config接口注入权限验证配置环节,死活会报"invalid signature"的错误(但是我做了试验,确定每次获取的签名没有错。)奇怪的事情是:如果刷新该页面,却又能配置成功。

##解决方法:

假设A跳到B,B页面需要微信权限配置,那么A跳转到B的跳转方式则不选用【browserHistory.push('/some/path')】或者【location.hash】的方式,而应该使用a标签或者location.href。

##思考:

导致这个问题的原因可能是(注意是:!!!可能是!!!,只有压缩的源代码,读不出什么名堂):生成微信权限认证的signature等信息需要根据当前的url来生成。我用fiddler抓包,发现在config这个阶段,微信没有把我传入的signature等参数传到微信的后台去验证是否配置正确,所以验证这一步是在前端本地完成。本地验证时前端生成的signature使用的url可能只会在页面onload等事件时获取,而使用【browserHistory.push('/some/path')】或者【location.hash】的方式,不存在这些事件,所以始终会出现"invalid signature"的问题 当然这只是我的猜测,不过解决方法是可行的。