最近在做微信公共号开发的时候遇到一些坑,特意记录下来,供大家参详,如果有更好的方法或者解决思路,欢迎提供。
项目背景:
在公众号中有活动页面,引导用户进行平台帐号的绑定操作,之后用户的所有福利均可以在平台中进行查看,于是诞生了绑定账号的需求。
目前有两套帐号体系A和B,都需要帐号绑定,于是绑定的需求就更新为帐号打通与绑定的需求,域名为abc.com和def.com。
遇到的问题:
项目完成后,大家测试。结果B帐号体系的完全正常符合预期,绑定成功。但是A帐号体系则出现有的iphone可以绑定成功,有的iphone绑定失败,安卓手机测试范围不多,没有遇到问题。
排查思路:
遇到这种问题,最先开始的就是在服务端查看打点日志,看看究竟出了什么问题。结果发现绑定失败的请求,并没有到达bind层。一直没有bind的请求。那么也就是绑定页面的前面一步,用户登录的时候出现异常了,由于绑定的页面是在def.com域名下,A帐号体系属于跨域操作,排查就联想到是不是跨域导致的,或者说用户是不是登录成功了。于是我们在有问题的手机上访问了abc.com的页面,发现用户果然并没有登录成功。问题是并不是所有的测试iphone都会出现这种问题。
微信在安卓机器上是基于QQ浏览器的内核。
微信在iphone上是iOS指定的内核,UIWebView实现的:
查看一下ios的微信浏览器的信息如下
第一台:{"appname":"Netscape","appVersion":"5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit\/602.1.50 (KHTML, like Gecko) Mobile\/14A456 MicroMessenger\/6.3.30 NetType\/WIFI Language\/zh_CN","appCodeName":"Mozilla","userAgent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit\/602.1.50 (KHTML, like Gecko) Mobile\/14A456 MicroMessenger\/6.3.30 NetType\/WIFI Language\/zh_CN"}
第二台:{"appname":"Netscape","appVersion":"5.0 (iPhone; CPU iPhone OS 9_3_5 like Mac OS X) AppleWebKit\/601.1.46 (KHTML, like Gecko) Mobile\/13G36 MicroMessenger\/6.3.30 NetType\/WIFI Language\/zh_CN","appCodeName":"Mozilla","userAgent":"Mozilla\/5.0 (iPhone; CPU iPhone OS 9_3_5 like Mac OS X) AppleWebKit\/601.1.46 (KHTML, like Gecko) Mobile\/13G36 MicroMessenger\/6.3.30 NetType\/WIFI Language\/zh_CN"}
有可能是内核做了这种安全的限制,限制了在跨域的情况下种cookie的操作。当然没有文献资料,我是看现象猜测的。于是,我退出了微信,原来绑定成功的iphone也显示绑定失败,并且经过排查与之前的出问题的iphone手机一样。既然在def.com里面不能正常的种cookie,那么在公共号内,我正常访问了abc.com的域名,随便种了一个cookie,然后在访问def.com绑定的页面,可能会覆盖之前的cookie吗?结果出问题的iphone竟然绑定成功。
我们第一种解决方案:在绑定页面,嵌入一个iframe, src就是abc.com的页面,尝试在进入绑定页面,就往abc.com域名下种cookie,结果失败,貌似为了安全,这种限制只能是正常的访问才可以。
第二种方案:建立一个def.com的空页面,作用就是获取微信的code与跳转到abc.com的页面种cookie,然后abc.com的页面再跳转到def.com的绑定页面,方案成功,但是稍微牺牲了用户进入页面的体验。
总结:
经过这次踩坑,对于微信浏览器跨域种cookie有了积累,并且对于微信web开发者工具的不好用有了吐槽。尤其是多帐号体系的打通与绑定有了新的认识。写下来供大家把玩,有好的解决方案也可以留言提供。
待解决:
1、base64位验证码在微信的web开发者工具中不通过验证;
2、有没有不三级跳,可以使用户体验更好并且能够解决问题的方案。
非常感谢下面的这篇文章
http://blog.csdn.net/zhx19920405/article/details/51417250
网友评论