nodejs獲取微信小程序帶參數(shù)二維碼實(shí)現(xiàn)代碼
nodejs獲取微信小程序帶參數(shù)二維碼實(shí)現(xiàn)代碼
由于項(xiàng)目需求,需要獲取小程序頁面的帶有參數(shù)的二維碼。好,那就看文檔搞吧。
之前都是寫前端,沒有寫過后臺的東西,這次難得有機(jī)會組長讓我試一試試用node來寫,那就寫吧。
1、首頁獲取token,發(fā)送request請求,用get的方式,在url后面加上小程序的grant_type,appid,secret,就順利拿到token了,注意,這個token是有有效時間的,小程序的是7200秒,也就是2個小時,每天獲取的次數(shù)有限,需要有個中控服務(wù)器定時獲取token,由于我的業(yè)務(wù)量小,就沒有對token進(jìn)行保存了,每次都是重新獲取。
2、獲取完token之后,再發(fā)送請求獲取二維碼,坑的是,微信沒有告訴我們獲取的是二進(jìn)制流,之前一直是寫前端的代碼,對流沒有概念,百度之,谷歌之,折騰了兩天,終于搞定。還遇到了express的坑,用原來express的代碼,死活生成不了二維碼,新建一個express再生成二維碼就沒問題,莫名其妙的坑。
上代碼:
var fs = require('fs'); var request = require('request'); var wx_conf = require('../../conf/wx_conf');//這里放了微信appid跟appSecret,文件沒有引入進(jìn)來,要用的時候,改一下吧。 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; //請求二維碼的參數(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請求數(shù)據(jù)出錯'); } } } module.exports = createQrcode;//暴露對象,調(diào)用create方法既可以創(chuàng)建二維碼
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
如何從頭實(shí)現(xiàn)一個node.js的koa框架
這篇文章主要介紹了如何從頭實(shí)現(xiàn)一個node.js的koa框架,koa.js是最流行的node.js后端框架之一,有很多網(wǎng)站都使用koa進(jìn)行開發(fā),同時社區(qū)也涌現(xiàn)出了一大批基于koa封裝的企業(yè)級框架。,需要的朋友可以參考下2019-06-06window10系統(tǒng)下nvm詳細(xì)安裝步驟以及使用
nvm可以管理不同版本的node和npm,可以簡單操作node版本的切換、安裝、查看等,下面這篇文章主要給大家介紹了關(guān)于window10系統(tǒng)下nvm詳細(xì)安裝步驟以及使用的相關(guān)資料,需要的朋友可以參考下2022-07-07基于Node.js實(shí)現(xiàn)壓縮和解壓縮的方法
本篇文章主要介紹了基于Node.js實(shí)現(xiàn)壓縮和解壓縮的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-02-02node.js中的querystring.escape方法使用說明
這篇文章主要介紹了node.js中的querystring.escape方法使用說明,本文介紹了querystring.escape的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12node創(chuàng)建Vue項(xiàng)目步驟詳解
在本篇文章里小編給大家整理的是關(guān)于node創(chuàng)建Vue項(xiàng)目步驟詳解內(nèi)容,需要的朋友們可以學(xué)習(xí)下。2020-03-03