exports.main = async (event, context) => {
// 获取access_token
const newToken = await uniCloud.httpclient.request('https://api.weixin.qq.com/cgi-bin/token', {
data: {
grant_type: 'client_credential',
appid: '小程序appid',
secret: '小程序密钥'
},
method: 'GET',
contentType: 'json',
dataType: 'json'
})
var AccessToken=newToken.data.access_token;
//使用access_token获取小程序码
var apiUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + AccessToken;
var res = await uniCloud.httpclient.request(apiUrl,{
method: 'POST',
contentType: 'json',
data:{
scene: 'uid=UID',
page: 'pages/index/index'
}
})
//把获取到的小程序码buffer转换为base64
let buffer = Buffer.from(res.data);
let base64 = buffer.toString('base64');
console.log("拿到的base64----",base64)
return base64
};```
- 发布:2023-04-23 14:35
- 更新:2024-12-12 17:12
- 阅读:340
产品分类: uniCloud/App
示例代码:
操作步骤:
新建云函数,复制上述示例的代码,把小程序appid和密钥改成自己小程序的,直接本地运行就可以看到
新建云函数,复制上述示例的代码,把小程序appid和密钥改成自己小程序的,直接本地运行就可以看到
预期结果:
把返回的buffer转成base64后应该可以显示
把返回的buffer转成base64后应该可以显示
实际结果:
把返回的buffer转换出的base64貌似是截取了一部分uni-id-pages的token
把返回的buffer转换出的base64貌似是截取了一部分uni-id-pages的token
bug描述:
在云函数中使用微信小程序的https://api.weixin.qq.com/wxa/getwxacodeunlimit接口获取小程序码,把该接口返回的buffer转换成base64后变成了使用uni-id-pages登录后的token
一样,都拿到base64了,放到image的标签中还是不展示图片
-
'use strict';
let uobc = require('uni-open-bridge-common')
const buffer = require('buffer');
exports.main = async (event, context) => {
//event为客户端上传的参数
//返回数据给客户端
// 应用级凭据
const key = {
dcloudAppid: '__UNI__xxxxxxx', // DCloud Appid
platform: 'weixin-mp' // 指定凭据所属平台,解释见上
}
const access_token=uobc.getAccessToken(key);
let {id,username,payment}=event;
let page='uni_modules/huodong/pages/huodong/detail?id=' + id + '&username='+username+'&payment=' +payment
//由此id生成分享码
const codeUrl=`https://api.weixin.qq.com/wxa/createwxaqrcode?access_token=${access_token}`
const codeOptions={
method:'POST',
data: {
"page":page,
"width":500,
// "env_version":'release'//trial:体验版
},
}
const res3 = await uniCloud.httpclient.request(codeUrl,codeOptions)
const buffer=res3.data
// console.log("---响应--",buffer)
// const buf = new Buffer (buffer)
// console.log("buffer转化",buffer.toString('base64'))
const result='data:image/png;base64,'+buffer.toString('base64')
return res3.data
};
2024-05-24 09:24
-
回复 9***@qq.com: 效果一样的,都是生成带参数的page页的二维码,然后getwxacodeunlimit当时好像是没调通,然后我因为使用量不会很大,所以改成了createwxaqrcode,,按理说他们应该一样的
2024-05-24 14:43
-
回复 9***@qq.com: https://blog.csdn.net/BeastCool/article/details/131707094,你可以参考下这个,然后把我的接口改下 应该能调通,去年12月的事情了。做过忘记了
2024-05-24 14:44
lazybone2021 - 80后宅
data中加上参数check_path: false就可以了 ,估计是你小程序没有发布造成的
check_path:默认是true,检查page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错)