nodejs獲取微信小程序帶參數(shù)二維碼實(shí)現(xiàn)代碼
nodejs獲取微信小程序帶參數(shù)二維碼實(shí)現(xiàn)代碼
由于項(xiàng)目需求,需要獲取小程序頁(yè)面的帶有參數(shù)的二維碼。好,那就看文檔搞吧。
之前都是寫(xiě)前端,沒(méi)有寫(xiě)過(guò)后臺(tái)的東西,這次難得有機(jī)會(huì)組長(zhǎng)讓我試一試試用node來(lái)寫(xiě),那就寫(xiě)吧。
1、首頁(yè)獲取token,發(fā)送request請(qǐng)求,用get的方式,在url后面加上小程序的grant_type,appid,secret,就順利拿到token了,注意,這個(gè)token是有有效時(shí)間的,小程序的是7200秒,也就是2個(gè)小時(shí),每天獲取的次數(shù)有限,需要有個(gè)中控服務(wù)器定時(shí)獲取token,由于我的業(yè)務(wù)量小,就沒(méi)有對(duì)token進(jìn)行保存了,每次都是重新獲取。
2、獲取完token之后,再發(fā)送請(qǐng)求獲取二維碼,坑的是,微信沒(méi)有告訴我們獲取的是二進(jìn)制流,之前一直是寫(xiě)前端的代碼,對(duì)流沒(méi)有概念,百度之,谷歌之,折騰了兩天,終于搞定。還遇到了express的坑,用原來(lái)express的代碼,死活生成不了二維碼,新建一個(gè)express再生成二維碼就沒(méi)問(wèn)題,莫名其妙的坑。
上代碼:
var fs = require('fs');
var request = require('request');
var wx_conf = require('../../conf/wx_conf');//這里放了微信appid跟appSecret,文件沒(méi)有引入進(jìn)來(lái),要用的時(shí)候,改一下吧。
var AccessToken = {
grant_type: 'client_credential',
appid: wx_conf.appId,
secret: wx_conf.appSecret
}
var wx_gettoken_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=' + AccessToken.grant_type + '&appid=' + AccessToken.appid + '&secret=' + AccessToken.secret;
//請(qǐng)求二維碼的參數(shù)
var postData = {
path: "pages/index/index",
width: 430
}
var createQrcode = {
create: function() {
console.log('fn:create');
this.getToken();
},
//獲取微信的token
getToken: function() {
console.log('fn:getToken');
var that = this;
new Promise((resolve, reject) => {
console.log('進(jìn)入Promise方法了');
request({
method: 'GET',
url: wx_gettoken_url
}, function(err, res, body) {
if (res) {
resolve({
isSuccess: true,
data: JSON.parse(body)
});
} else {
console.log (err);
reject({
isSuccess: false,
data: err
});
}
})
}).then(proData => {
that.getQrcode(proData);
});
},
//生成二維碼
getQrcode: function(proData) {
console.log ('fn:getQrcode');
if (proData.isSuccess) {
postData = JSON.stringify(postData);
request({
method: 'POST',
url: 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' + proData.data.access_token,
body: postData
}).pipe(fs.createWriteStream('./public/images/index.png'));//路徑自己定義吧
} else {
console.log('Promise請(qǐng)求數(shù)據(jù)出錯(cuò)');
}
}
}
module.exports = createQrcode;//暴露對(duì)象,調(diào)用create方法既可以創(chuàng)建二維碼
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Node.js數(shù)據(jù)流Stream之Duplex流和Transform流用法
這篇文章介紹了Node.js數(shù)據(jù)流Stream之Duplex流和Transform流的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
node.js的http.createServer過(guò)程深入解析
這篇文章主要給大家介紹了關(guān)于node.js的http.createServer過(guò)程的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
node學(xué)習(xí)記錄之搭建web服務(wù)器教程
本篇文章主要介紹了詳解node學(xué)習(xí)記錄——搭建web服務(wù)器,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
Node.js之構(gòu)建WebSocket服務(wù)全過(guò)程
這篇文章主要介紹了Node.js之構(gòu)建WebSocket服務(wù)全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
node.js結(jié)合webSocket實(shí)現(xiàn)聊天室
于Node.js和WebSocket的聊天室,主要包括前端頁(yè)面,主要是用戶操作的頁(yè)面,還包括后臺(tái)數(shù)據(jù)通信以及邏輯處理,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
nodejs獲取微信小程序帶參數(shù)二維碼實(shí)現(xiàn)代碼
這篇文章主要介紹了nodejs獲取微信小程序帶參數(shù)二維碼實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04

