一个微信公众号的外链网页,使用angular
做成了单页应用,目前碰到了 微信网页授权 和 调用 js sdk 的问题
微信授权
据我所目前所知,调用了微信授权后,单页应用的入口 url 会长成这样(假定域名为:example.com
):
①
http://example.com?code=aaabbb/#/home
或者(启用了html5 mode
) 长成这样:
②
http://example.com/home?code=aaabbb
?code=aaabbb
, 是微信授权后重定向时填充的,有了这个才能进一步去获取用户信息,参见 微信开发文档 > 获取code
至此,还不会出现问题
调用 js sdk
由于Android微信客户端不支持pushState的H5新特性,url②废弃(亲测,确实不能通过验证),所以入口url是这样:
http://example.com?code=aaabbb/#/home
现在问题来了,如果没有?code=aaabbb
就能通过签名验证, 然后成功调用 js sdk,但实际情况是:如果需要授权?code=aaabbb
必然存在,签名验证必定失败。那么到底如何做到授权和调用sdk均可用???
我目前的想法和做法是:微信授权重定向到
http://example.com?code=aaabbb/#/home
后,拿到code,然后再location.href = http://example.com/#/home
。这样做是能拿到用户信息,并且成功调用sdk,但问题是每次进入应用,会刷新两次,这样用户体验极差,而且有强迫症的我也接受不了。
请教各位给个靠谱的方案
纯前端是没法实现了,只能将授权回调页面域名配置到后台服务器,再由后台重定向