我使用 nodejs 调用的https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html 获取二维码二进制数据,保存成图片后,图片打不开。
最后直接保存成 qr.png
尝试过将返回的数据流进行utf8,binary 等其他格式编码保存成图片,还是无法查看。官方能不能在这个接口返回的数据流作下详情说明或者给个demo啊。
框架类型 | 问题类型 | API/组件名称 | 终端类型 | 微信版本 | 基础库版本 |
---|---|---|---|---|---|
小程序 | Bug | 获取小程序码 接口B | 工具 | 6.6.6 | 2.0.0 |
4 个回答
大佬,最后返回的data也不是二进制流啊 是要他那个buffer吗?
是一个图片数据流,在请求获取到流的地方要加上 responseType: 'stream' 明确指定返回类型为流
不行啊,报错为 app.js:473 Error: Converting circular structure to JSON
解决了,我就不一一回复了。我使用nodejs写的demo。
const axios = require(
'axios'
);
const fs = require(
'fs'
);
// 1.首先获取 access_token
const APPID =
'your appid'
;
const APPSECRET =
'your appsecret'
;
getToken()
.then(res => {
console.log(
'获取accessToken'
, res);
return
getQRCode(res.access_token);
})
.then(data => {
if
(data.errcode) {
return
new
Error(
'出错啦,错误信息:'
+ data.errmsg);
}
// 保存图片
data.pipe(fs.createWriteStream(Date.now() +
'.png'
));
});
// 获取access_token
function
getToken() {
return
new
Promise(
function
(resolve) {
axios
.get(
'https://api.weixin.qq.com/cgi-bin/token'
, {
params: {
grant_type:
'client_credential'
,
appid: APPID,
secret: APPSECRET
}
})
.then(response => response.data)
.then(
function
(data) {
resolve(data);
});
});
}
// 获取二维码
function
getQRCode(access_token) {
const GET_WXACODE_UNLIMIT = `https:
//api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=`;
let params = {
scene:
'goodsId=1232412'
,
page:
'pages/product/index'
,
width: 430,
auto_color:
false
,
line_color: { r:
'0'
, g:
'0'
, b:
'0'
}
};
console.log(JSON.stringify(params));
return
new
Promise(
function
(resolve, reject) {
axios
.post(GET_WXACODE_UNLIMIT + access_token, params, {
responseType:
'stream'
// 这行很重要
})
.then(response => response.data)
.then(
function
(data) {
resolve(data);
});
});
}
解决了吗,我也遇到这种情况
我也是这样,有解决办法吗