官方文档:https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html

一、创建云函数并配置相应的权限

blog_wxmini_qrcode_001

//配置相关的调用权限
{
  "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: '生成失败!',
      })
    }
  });
}

运行结果:
blog_wxmini_qrcode_002

四、常见问题

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"
    ]
  }
}