顺利完成了微信公众账号接入的一期工作,这两天优化了一下,智能绑定微信公众账号的过程中又发现了几个坑,部分问题应该是微信后期加入的限制,在这里分享一下。
1.验证码问题:通过账号密码登录微信公众账号后台的时候,如果多次密码输入错误,之后输入正确的密码时会提示输入验证码,之前模拟抓取验证码的图片链接是https://mp.weixin.qq.com/cgi-bin/verifycode?username=用户名&r=随机数,输入正确的验证码是可以模拟登录成功的,但是在开发临近上线的前几天突然不行了,明明验证码输入正确的,但是返回错误信息“need verify code”,特别奇怪,和成哥研究了半天,发现调用这个获取验证码的接口时会更新cookie,写入key为sig的值,这样使得我这边必须自己封装获取验证码图片的接口,然后自己保存cookie并抓取验证码图片,cookie用于之后调用登录接口使用,验证码图片返回前端显示给用户。
2.开启开发者模式失败:一期接入工作上线第一天,用户反馈无法绑定成功,提示开发者模式开启失败,刚开始以为用户在微信公众平台后台做了一些特定的配置导致的,后来发现是用户从来没有使用过开发者模式,在微信公众平台还没有成为开发者,在后台成为开发者设置一个服务器URL和token后就可以绑定成功了。情急之下,和产品沟通在详细信息中加入了出现这种问题的解决办法。没有考虑到这种情况主要是提供的测试账号当初都已经成为开发者了,没有未成为开发者的账号用于测试。之后开始研究如何在快站帮用户把这个事情也做了,不然怎么能叫智能绑定呢,分析了一下,发现就是调用了https://mp.weixin.qq.com/advanced/callbackprofile?t=ajax-response&token=1789363399&lang=zh_CN 接口绑定服务器URL和Token,所以需要在开启开发者模式之前,更新服务器URL和Token(测试发现在没有开启开发者模式前是可以更新服务器URL和Token的),这样问题就解决了。
3.字节数问题:在后期测试的过程中,测试人员发现发布菜单偶尔会不成功,提示菜单名称过长,分析发现可以输入5个汉字,6个汉字就提示错误了,官方给出的文档是不超过16个字节,纠结了半天,突然想到微信可能是一个汉子3个字节,这样就能够说通了。为了证明这个结论,我在五个汉字后面又加了一个字符测试,发现是可以发布成功的,再多加一个字符就不行了,so I am right。微信用的是utf8编码,所以一个汉字对应3个字节。
微信的限制在可预见的未来应该会越来越多的,为了智能绑定微信公众账号,只能时刻关注它的接口变化了。今天微信公众平台上线了投票和多客服功能,看来一大批做微信营销的第三方开发者要哭了,既做裁判又做选手是腾讯一贯的作风,第三方开发者得长点心了,不能在一棵树上吊死,快站之后也会开放第三方开发平台,供大家开发定制的组件和插件用于页面展示或者实现特定的功能,尽请期待。
突然想起小米初期对供应商说的一句话,以此做结吧。“你不挣钱没事儿,你错过了占坑可是大事儿。万一我们将来能做成呢,你就丧失了巨大的机会。”