本文实例为大家分享了小程序生成带参小程序码的具体步骤,供大家参考,具体内容如下
<强>生成带参小程序码流程强>
1,小程序端上传生成二维码所需的参数到云函数
2,云函数使用<强> >强和请求
3、云函数使用+小程序端上传的参数生成二维码
4、云函数将生成的二维码返回到小程序端(或者存到数据库返回文件标识,小程序端用文件标识进行获取,后续生成先在数据库查找,数据库没有再执行生成操作,防止重复生成小程序码文件)
小程序端上传小程序码所需的参数
wx.cloud.callFunction ({ 名称:' getImage ',//云函数名称 数据:{//小程序码所需的参数 页面:“页面/xxxx/xxxx”, id: id、 }, 完成:res=比;{ 控制台。日志(callFunction测试结果:,res) 这一点。setData({//获取返回的小程序码 xcxCodeImageData: res.result, }) } })
云函数用和请求
创建云函数,并在对应云函数目录中导入框架(用于数据请求),
npm安装——保存请求//请求框架 npm安装,节省request-promise//请求框架承诺风格 npm安装,节省axios//数据请求框架,可将返回的数据类型设置为流“流” #备注:安装可以简写为我;保存作用是将这个库添加到package.json里面
云函数文件中导入框架
const云=要求(“wx-server-sdk”) const axios=要求(“axios”) var rp=要求(“request-promise”); const fs=要求(fs); var=需要流(流); #不需要全部导入,根据实际下面实际使用情况酌情导入 >之前请求获取access_token
//请求框架承诺风格 rp (' https://api.weixin.qq.com/cgi-bin/token& # 63; grant_type=client_credential& appid==appSecret秘密' 不要犹豫(函数(resultValue) { 控制台。日志(“请求成功:”) console.log (JSON.parse (resultValue)) }) .catch(函数(err) {}); });//Nodejs原生写法 const http=要求(“https”) const url=" https://api.weixin.qq.com/cgi-bin/token& # 63; grant_type=client_credential& appid==appSecret秘密” http.get (url (res)=祝辞{ var resultValuehttps://www.yisu.com/zixun/=薄? res.on(“数据”,(数据)=祝辞{ resultValue +=数据 }) res.on(“结束”,()=祝辞{ console.log (resultValue) }) })。(“错误”,(e)=祝辞{ 控制台。日志(“获取数据失败:$ {e.message} ') })获取小程序码
={var选项 方法:“文章”, url: https://api.weixin.qq.com/wxa/getwxacodeunlimit& # 63; access_token=' + access_token ', 身体:{ 页面:“页面/xxx/xxx 场景:“xxx id=? }, json:真 }; rp(选项) 不要犹豫(函数(parsedBody) { console.log (parsedBody)//小程序码图片数据 }) .catch(函数(err) {});服务端完整代码一
var rp=要求(“request-promise”); const fs=要求(fs); var=需要流(流);//请求微信access_token rp (' https://api.weixin.qq.com/cgi-bin/token& # 63; grant_type=client_credential& appid=appid&秘密=秘密') 不要犹豫(函数(resultValue) { 控制台。日志(“请求成功:“+ resultValue) console.log (JSON.parse (resultValue) .access_token)//请求小程序码 var http=要求(“http”), data=https://www.yisu.com/zixun/{//小程序码参数“页面”:“页面/CardDetail/CardDetail”, “宽度”:300年, “现场”:“id=W6MIjlJhFW5Pec-Y”, }; data=https://www.yisu.com/zixun/JSON.stringify(数据);={var选项 方法:“文章”, 主持人:“api.weixin.qq.com”, 路径:“wxa/getwxacodeunlimit& # 63; access_token=" + JSON.parse .access_token (resultValue), 标题:{ “内容类型”:“application/json”, “内容长度”:data.length } }; var点播=http。请求(选项,函数(res) { res.setEncoding(“二进制”); var imgDatahttps://www.yisu.com/zixun/=? res.on(“数据”,函数(块){ imgData +=块; }); res.on(“结束”,函数(){//将返回的图片数据转化成还是方法fileContent参数所需的文件流形式,且本地输出数据正常,可以试着用此方法执行还是进行获取小程序码,作者采用了方法二 var bufferStream=new stream.PassThrough (); bufferStream。结束(新缓冲区(imgData)); console.log('还是方法fileContent参数所需的文件流- - - - -”) console.log (bufferStream)//崇高文本可以运行输出到本地,且可以打开二维码//本地存放路径 var路径='公共/+ Date.now () + . png”; fs。writeFile(路径、imgData“二进制”功能(err) { 如果(err) { 控制台。日志(“失败”); } 控制台。日志(“成功”); }); }); }); req.write(数据); req.end (); }) .catch(函数(err) {});微信小程序云开发生成带参小程序码流程