总的讲没啥难度,就是坑多,各种各样的隐藏坑,先把坑列出来
1.获取接口调用凭据
这个参数是真的只填写client_credential 这个字符串,压根就不是什么参数
2.云函数url化,使用集成响应返回二进制文件,官网上的介绍是这个,然后,然后没有了,你要用这种方式,完全就是复杂化,一个坑接着一个坑,基本上没有相关的案例
3.云函数URL化后,云函数里的log 完全看不到,我这里就吃了个哑亏,调试起来异常艰难,所以一定要先运行本地云函数,确保没问题在上传
4.常规的请求方式,比如uni.request,uniCloud.request等用不了,不过可以用uniCloud.httpclient.request,这个地方也容易翻车,也可能是我对这块还不是很了解
其他就不讲了,反正也没啥难度,为了节约大家的时间就直接贴代码了,简单直接,复制就能用
'use strict'; exports.main = async (event, context) => {
const res = await uniCloud.httpclient.request('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的密匙 ', {
method: 'GET',//
dataType: 'json' // 指定返回值为json格式,自动进行parse
})
const code = await uniCloud.httpclient.request("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+res.data.access_token, {
method: 'POST',
data:{
"page": "真实的路径,前面不要加/",
"scene": "页面所携带的参数",
"check_path": false,
"env_version": "指定小程序的版本,正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。"
},
contentType: 'json', // 指定以application/json发送data内的数据
dataType: 'blob' // 指定返回值为blob格式,都不用在转一次了
})
const buffer=code.data
const result=buffer.toString('base64')
return "data:image/png;base64,"+result
};
然后就是上传云函数,url化,调用,就能正常拿到可以用的小程序码了,这是针对特定场景的,其他场景不适用,有其他场景解决方案的也可以贴出来,不喜勿喷哈