官方文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html
一、创建云函数并配置相应的权限
//配置相关的调用权限
{
"permissions": {
"openapi": [
"wxacode.getUnlimited"
]
}
}
二、编写云函数
//index.js
// 云调用~生成小程序二维码
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async(event, context) => {
var scene = event.scene;
var page = event.page;
var width = event.width;
try {
// 1、通过云调用生成二维码
const result = await cloud.openapi.wxacode.getUnlimited({
scene: scene,
page: page,
width: width
})
console.log(result)
// 2、上传图片到云存储
const upload = await cloud.uploadFile({
cloudPath: scene + '.jpg',
fileContent: result.buffer,
})
console.log(upload)
// 3、返回图片地址
var fileID = upload.fileID;
console.log("fileId=" + fileID);
const fileList = [fileID]
const imgList = await cloud.getTempFileURL({
fileList: fileList,
})
return imgList.fileList
} catch (err) {
console.log(err)
return err
}
}
三、调用云函数
onLoad(){
console.log('onload');
// 云调用~生成小程序二维码
wx.cloud.init({
env: 'gorpeln',
traceUser: true
})
var path = 'pages/index/index'
var width = '430';
wx.cloud.callFunction({
name: 'posters',
data: {
page: path,
width: width,
scene: 'poseterId=1',
},
success: res => {
console.log(res)
wx.showToast({
title: '生成成功!',
})
},
fail: error => {
console.log(JSON.stringify(error))
wx.showToast({
title: '生成失败!',
})
}
});
}
运行结果:
四、常见问题
VM86:1 [云函数] [login] 调用失败 Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail cloud function service error code -504002, error message Function not found: [login]; at cloud.callFunction api;
云端运行环境为 Node.js,需要先在本地安装 Node.js 和 npm才能顺利测试。同时还要在云函数目录下安装 wx-server-sdk 依赖。
1、安装node.js和npm
node.js 下载地址 https://nodejs.org/en/
安装node.js时会同时安装npm 测试安装是否成功 安装完成后:
输入node -v 来测试 node.js 输入npm -v 来测试 npm
2、安装wx-server-sdk依赖。
在cmd中首先通过cd 云函数路径的命令,定位到云函数目录,这里要定位到某个具体的云函数文件夹内,如login函数则要定位到login文件夹内。然后再执行命令
npm install --save wx-server-sdk
安装wx-server-sdk依赖。对于每一个你创建云函数都要安装该依赖。
errMsg: “system error: error code: -604101”
config.json (如果config.json文件不存在,需要手动创建)中配置 wxacode.getUnlimited API 的权限。
{
"permissions": {
"openapi": [
"wxacode.getUnlimited"
]
}
}