已经不想再吐槽微信小程序的文档写的多渣。这里记录一下生成小程序码的需要注意的事项,希望能给踩到坑的人一点借鉴。
微信提供三个接口去获取二码,这是官方文档地址:
接口A和接口B都是获取小程序码(花朵状的那种),这俩接口的区别是码的生成个数。A的上限是10万张,B不受限制。接口C生成的是二维码(正方形的样子)也是上限10万张。
这里我采用了接口B,先说一下实现的步骤:
1.获取appId和secret的值:appId可以去开发者工具的详情里面看,或者去配置文件里面里看。secret就是小程序密钥建项目的时候可以看到。
2.获取小程序 access_token:用Get请求 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appId&secret=secret, 获取access_token。
其中grant_type的值固定是client_credential。
3.获取小程序码的二进制流图片:用Post请求https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=access_token,传入page路由地址和sence页面参数获取图片的二进制流。
看起来2个请求就轻松搞定了,所以产品经理问起时,我信心满满的告诉他很快搞定。然后呵呵了....
碰到的问题有以下几点:
1.文档对sance描述的不是很清楚,让人误以为onload里面自带sance值。但其实刚开始这个值是不存在的需要自己去定义,值是获取页面数据的参数,只有用户通过扫小程序码进到页面的时候onload里面才会出现sance值。
2.sance值有大小和格式限制,只支持32个字符、数字、大小写英文以及部分特殊字符。比如当你需要传页面的id和其他参数,而页面的id是通过UUID生成的(UUID是由一组32位数的16进制数字所构成),那么只能寻求他法,把需要传的值变成32个字符以下。我就是这种情况。
3.小程序发布后page才有效,在开发版上会报错,所以想要看效果要先上线,好坑。上线前项目需要审核,要等一段时间。我发布的几个版本都等了3个小时左右。体验版没试过。
4.前台得到的二进制流图片无法解析,当顺利过了1,2,3步时,就可以成功的拿到了二进制流的小程序码。用wx的请求数据的方式却无法解析出来,而且微信目前也不支持blob。所以最后还是找后台人员帮忙了。前台只传sance和page值给后台,其他都后台做了。后台直接生成图片过来。
问题到这就解决了。花了好长时间,我的加班记录也是因为它破了。这里代码就不贴了。回想一下会出现以上问题,很大原因还是文档遗漏太多。