背景
本文主要解决小程序内部,分享朋友圈时生成海报中包含“带参小程序码”的场景;
步骤
- 开通云环境(不做介绍)
- 编写云函数
- 生成二维码
# 配置权限 { "permissions": { "openapi": [ "wxacode.getUnlimited" ] } }
- 上传到云服务
- 获取临时链接
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database();
let response = function (code, data, msg) {
return {
code: code,
data: data,
msg: msg || '成功'
}
}
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
console.log({
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
})
try {
const imgData = await cloud.openapi.wxacode.getUnlimited({
"page": event.path,
"scene": event.scene
})
let imgType = imgData.contentType.split('/')[1];
console.log('图片类型:', imgType);
let fileData = await cloud.uploadFile({
cloudPath: `appletQRCode/${event.createTime}QRCode.${imgType}`,
fileContent: imgData.buffer,
})
const fileList = [fileData.fileID]
const result = await cloud.getTempFileURL({
fileList: fileList,
})
return response(10000, result.fileList, '成功')
} catch (err) {
return response(20000, err, '失败')
}
}
使用云函数
- WX_getQRCode 这个是云函数名称,自行定义
wx.cloud.callFunction('WX_getQRCode', {
path: 'pages/all-goods/all-goods',
scene: 'azzzzzbc_234',
})
.then((res) => {
console.log(res)
})
总结
生成小程序码有两种场景
这里使用的是:接口B
接口A :
wxacode.createQRCode 总共生成的码数量限制为 100,000,请谨慎调用。
注意
接口只能生成已发布的小程序的二维码
网友评论