小程序结合云开发获取小程序码

Posted 天库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序结合云开发获取小程序码相关的知识,希望对你有一定的参考价值。

最近开发小程序遇到一个生成小程序码的功能,常规操作是通过以下接口请求:

POST https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN

但是今天突然不想走寻常路,决定用一用云开发玩一玩。

话不多说,码它!

wxml:

<button bindstap="creatCode">点击获取</button>

 

云函数,我定义了一个getcode函数,首先往函数下的config.json文件配置一下云调用权限

config.json:

openapi.wxacode.get

 

接着往index.js里面写入逻辑代码:

index.js:

const cloud = require(‘wx-server-sdk‘)

cloud.init()

exports.main = async (event, context) => {
  try {
    const result = await cloud.openapi.wxacode.get({
        path: ‘page/index/index‘,
        width: 430
      })
    console.log(result)
    return result
  } catch (err) {
    console.log(err)
    return err
  }
}

 

最后用方法creatCode调用以上云函数

js:

creatCode(){
    console.log(‘开始生成小程序码‘)
    wx.cloud.callFunction({
      name:‘getcode‘,
      data:{},
      success:res=>{
          console.log(res)
          let fileManager = wx.getFileSystemManager();
          let filePath = wx.env.USER_DATA_PATH+‘/qr.jpg‘;
          fileManager.writeFile({
            filePath:filePath,
            encoding:"binary",
            data:res.result.buffer,
            success:res=>{
              console.log(res)
              wx.previewImage({//图片预览

                urls: [filePath],

              })


            }
          })
      },
      fail: err=>{

      }
    })
    

}

查了一下官方文档,云函数返回的数据是一个包含二进制数据及其数据类型的对象,是一个ArrayBuffer类型的东西

这里遇到一个坑,直接将这个类型转为base64然后在image标签中调用出来,在微信开发工具上是可以出来的,但是真机上就gg了,直接空白

需要将这个数据存成本地临时文件

于是通过

let fileManager = wx.getFileSystemManager()
fileManager.writeFile

将二进制数据保存。

完事!

以上是关于小程序结合云开发获取小程序码的主要内容,如果未能解决你的问题,请参考以下文章

借助云开发10行代码生成小程序码,可以微信扫码快速进入指定小程序页

看我解析小程序云开发模板

小程序群发短信,借助云开发5行代码实现短信群发功能

微信小程序开发,怎么获取小程序场景值?

微信小程序开发 怎么获取小程序场景值

微信小程序开发笔记 进阶篇④——getPhoneNumber 获取用户手机号码(小程序云)