由于实在无语微信文档的维护质量.特把自己在微信开发里掉过的坑都做个mark.就当是个笔记吧 2018-8-6
先从开发工具开始,我是用ubuntu做开发的, 微信官方没有linux下的微信开发工具,不过git上有开源的版本,但是,很多人反映安装不好.所以这里特地做一个安装的说明.
github的地址我先贴出来微信开发者工具(微信小程序)linux完美支持
我先吐槽一下,下载的真一个叫慢啊,为此,我在网盘上搬运了一份.
- 点击这里下载微信开发者工具或者从github官网下载
- 解压压缩包到你的硬盘, 本身就带个根目录. 名字是wechat_web_devtools
- 进入wechat_web_devtools. 清空文件夹根目录下的temp和dist文件夹.
- 安装wine ,具体方法百度
- 在wechat_web_devtools目录下运行 ./bin/wxdt install
- ./bin/wxdt
注意,如果你在开发小程序的时候报wcc 和 wcsc 编译错误
sudo apt-get install wine-binfmt
sudo update-binfmts --import /usr/share/binfmts/wine
上传图片接口
原始文档在这里,这里有个小坑: localId
虽然提示的这个id是由chooseImage获取的,但你要知道chooseImage获取id的时候返回的是一个数组对象.
不要想当然的以为chooseImage返回的是id对象.
/*错误的写法*/
// 上传图片到微信服务器
wx.uploadImage({
localId: localIds, // 你上传的不是id,而是id的数组.
isShowProgressTips: 1,
success: function(res){
....
}
})
/*正确的写法*/
// 上传图片到微信服务器
wx.uploadImage({
localId: localIds[0], // 上传id,
isShowProgressTips: 1,
success: function(res){
....
}
})
自定义菜单报错: 40016 invalid button size hint
这个问题非常常见,原因也很多,我这里只把我遇到的情况做个说明.其实这个问题本不该出现,这是微信的开发文档维护不当造成的,我说的维护不当主要是指:
- 文档前后不一致.
- 说明含糊不清,甚至有错误.
很多人遇到了,就是把菜单配置用接口拉下来,再上传,依然会报这个错误.其实这个问题是字符编码问题导致的:
- 中文字符不要进行编码
- 把对象转成json对象,然后再编码当作对象传进去(这接口设计的不是一般的蹩脚哈哈)
一直很奇怪微信的接口规范: 有的接口需要传对象进去,有的接口需要传json,有的接口需要传字符串,有的接口需要做url_encode,有的接口不允许做url_encode,千奇百怪,我就不一一列举了....
由于很简单,我就直接上代码了.
menu = {"button": [........]}
r = requests.post(url, data=json.dumps(menu, ensure_ascii=False).encode())
## ensure_ascii=False表示不给非ASCII的字符做编码,注意这奇葩的传参方式