赞
踩
在微信小程序使用中,我们会遇到这样的场景,我们使用微信扫描一个二维码,然后会跳转到这个小程序中的一个页面,然后具体我们应该怎么实现呢?下面就是围绕这个功能展开的。
由于我也是第一次做,在网上查阅了一些资料后,发现小程序的文档中有下图几个api:
这里有三个api前两个是数量有限,后一个数量没有限制,根据自己项目的具体情况可自己选择。
三个接口都可以云函数调用,下面讲的不是云函数调用方法的。
我以第三个接口为例讲一下,首先我们看一下这个请求地址和参数。
请求地址https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
post请求(这个就是请求的地址,那个也不是变量)
首先我们需要先获取到access_token,如下图:
我们拿到这个access_token之后请求这个二维码,我们会拿到这个图片的二进制数据。这里我们采取的是把整个二进制流返回给小程序端 ,这个我们小程序端接收数据的时候有一个需要注意的点,我们小程序端使用wx.request的时候设置responseType,这个api里面的细节我们可以在文档中看到,我只截出如下图:
这个属性默认值是text,但是我们要注意我们收到的请求是一个二进制类型的,因此我们要使用下面那个。(如果使用text,我们的响应会默认转成text会看到一堆乱码)。我们拿到这个二进制之后我们可以通过:
这个图中的api把二进制数据转化成base64的数据。
const img_url = `data:image/qrcode;base64,${base64}`
然后可以通过这个方式把这个img_url放入img标签的src属性中,这样我们就能显示出来二维码了,但是这里会有一个问题,因为我们的这个二维码太大了,使用base64放入img的src中会影响渲染性能,因此我们会收到一个黄色的警告,暂时还没解决。
我们把图片放在后端进行处理,我们拿到二进制的图片后,先把二进制的图片转化成一个图片,然后再把这个图片的网络地址返回给小程序,这样我们在img中加载这个网络地址就行了,这样就不会有这个性能问题了,但是目前试了试二进制流转换成一个图片太好的办法,因此还没实现。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。