收藏
回答

获取不限制的小程序码上线一阵子之后就突然不能显示二维码了

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug getUnlimitedQRCode 微信iOS客户端 8.0.50 3.5.1

https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/qr-code/getUnlimitedQRCode.html

左边是部署之后返回的结果,右边是本地局域网测试返回的结果,在本地可以正常显示,但是在线上就没法显示了(刚上线的时候是正常的,过了一段时间就不行了),看了好久都没找到原因

const express = require('express') const axios = require('axios') const router = express.Router() const { appid, secret } = require('../config') // access_token 缓存 let accessTokenCache = { value: null, expiry: 0 } // 获取 access_token async function getAccessToken() { const currentTime = Date.now() if (accessTokenCache.value && currentTime < accessTokenCache.expiry) { return accessTokenCache.value } try { const response = await axios.get( `https://api.weixin.qq.com/cgi-bin/token`, { params: { grant_type: 'client_credential', appid: appid, secret: secret } } ) if (response.data.access_token) { accessTokenCache = { value: response.data.access_token, expiry: currentTime + (response.data.expires_in - 300) * 1000 } return response.data.access_token } else { throw new Error('Failed to retrieve access_token') } } catch (error) { console.error('Error fetching access_token:', error) throw new Error(error) } } // 生成小程序码 router.get('/getUnlimitedQRCode', async (req, res) => { const { scene, page } = req.query try { const accessToken = await getAccessToken() const response = await axios.post( `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${accessToken}`, { scene, page, check_path: false, env_version: 'release', width: 300, auto_color: true, is_hyaline: true // 其他小程序码参数... }, { responseType: 'arraybuffer' // 表示返回值为二进制格式 } ) // 返回二进制图片数据 res.set('Content-Type', 'image/png') const base64Image = response.data.toString('base64') res.send(base64Image) } catch (error) { res.status(500).json({ error: error.message }) } }) module.exports = router
回答关注问题邀请回答
收藏

1 个回答

  • Mr.Zhao
    Mr.Zhao
    发表于小程序端
    07-30
    尴尬,base64光知道生成图片,不知道去生成json看报错
    07-30
    有用
    回复
登录 后发表内容