koa2通过https调用生成小程序码

2020-06-05 08:10:26

记录一下nodejs下使用https调用生成小程序码的方法

主要思路

调用getwxacodeunlimit之后将图片buffer写入本地并调用云存储http api上传至云存储空间

主程序代码

server.js


app.use(async (ctx, next) => {
  await next()
  ctx.set('content-type', ctx.mimeType)
  ctx.body = ctx.data
})

// 获取小程序码
router.get('/getWxaCode', async (ctx, next) => {
  let page = ctx.request.query.page || '',
    token = ctx.request.header.token || ''

  // 获取小程序码配置
  const codeOptions = {
    method: 'POST',
    url:
      'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + token,
    body: {
      page: page,
      width: 230,
      scene: 'pc=1',
    },
    json: true,
    encoding: null,
  }

  let imgBuffer = await new Promise(function (resolve, reject) {
    request.post(codeOptions, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        resolve(body)
      }
      reject(error)
    })
  })

  fs.writeFile(page.replace(/\//g, '-') + '.jpg', imgBuffer, function (err) {
    //生成图片(把buffer写入到图片文件)
    if (err) {
      console.log(err)
    }
  })

  //  上传至云存储
  const upOptions = {
    method: 'POST',
    url: 'https://api.weixin.qq.com/tcb/uploadfile?access_token=' + token,
    body: {
      env: env,//小程序云环境的ID
      path: page.replace(/\//g, '-') + '.jpg',
    },
    json: true,
  }
  let res = await new Promise(function (resolve, reject) {
    request(upOptions, function (error, response, body) {
      if (!error && response.statusCode == 200) {
        resolve(body)
      }
      reject(error)
    })
  })

  ctx.data = res
  await next()
})

参考文档

本文链接:
版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0

评 论: