教你如何用node.js开发微信公众号(一)
內容簡介
本文章簡單介紹了如何用node.js開發微信公眾號。主要內容包括微信公眾平臺的配置,signature的驗證,以及用node.js去處理用戶主動發起的行為。
準備工作
開發前需要安裝好node.js,因為我是基于express框架開發的,所以裝了express(框架按自己的需求選擇),需要有一個微信公眾號,不管是訂閱號還是服務號都可以(沒有的話可以用測試公眾號),還需要一個公網能訪問的服務器。基本的配置就這些,后面有需要的再補充。接下來,開始講如何開發。
一、微信公眾平臺配置
登錄微信公眾平臺,沒有公眾號的話注冊一個測試公眾號(不會的點這里,掃碼登錄即可)。 進入到公眾平臺,你會看到如下界面:
基本配置
進入到公眾平臺首頁,首先會有一個測試號信息的appID,appsecret;并且appID和appsecret是不可以修改的(自己注冊公眾號的appsecret是可以重置的,操作很簡單,這里不做說明);
接口配置
接口配置信息這個模塊,首次進來的是空的,需要自己配置;這里需要配置兩個參數,一個是URL,還有一個是Token;如果不知道怎么配置,具體的可以看微信的wiki文檔,我這里也給大家說一下我配置的時候遇到的一些坑吧! 
 首先,點擊修改的時候,會變成如下界面:
注意點:
- URL參數說明: url填的是一個公網上部署好的接口地址(是真實存在已經部署好能夠請求的接口),接口必須以http://或https://開頭,僅支持80端口和443端口。
- Token參數說明: token填的是自己定義的一個標識,需要注意的一點就是這邊配置好了以后,在上面那個url的接口里面設置的token需要和這個保持一致,不然配置是不會成功的。
具體的配置指南戳這里
當你點擊提交的時候,會發送一個get請求到你剛剛填寫的URL地址,并且會帶上4個參數,分別是:signature,timestamp,echostr,nonce,然后在服務端驗證配置是否通過;
 如果配置成功,則會有如下成功提示:
接口配置到這里就完成了。
JS接口安全域名
這個配置主要是為了能夠調js-sdk接口配置的,只有在該域名下,開發才能調用微信js接口(像調用二維碼,上傳預覽文件等功能),文檔也寫的比較詳細,這里不做過多說明。
微信官方JS-SDK文檔戳這里
到這里,微信公眾平臺的配置就差不多了,接下來就可以開始服務端的開發了。
二、node服務端開發配置
還記得微信公眾平臺配置的時候填寫的url和token值嗎?這里就用到了,來看下面一段代碼:
const bodyParser = require('body-parser'); //處理請求參數server.get("/", function (req, res) {var token = "xxxx";var signature = req.query.signature;var timestamp = req.query.timestamp;var echostr = req.query.echostr;var nonce = req.query.nonce;var oriArray = new Array();oriArray[0] = nonce;oriArray[1] = timestamp;oriArray[2] = token;oriArray.sort();var original = oriArray.join('');var sha = sha1(original)if (signature === sha) {//驗證成功res.send(echostr)} else {//驗證失敗res.send({ "message": "error" })}}); 復制代碼還記得上面說點擊提交的時候會發一個get請求嗎?還說會帶signature,timestamp,echostr,nonce四個參數。就是在這個接口中,判斷配置是否成功的,來看下這個get請求具體做了什么事情。
具體可以看官方文檔(文檔示例是php的),文檔地址 戳這里;
到這里微信開發的公眾號配置和node服務端配置就完成了,接下來可以開始愉快的開發啦!
三、用戶信息處理
首先問一個問題,當用戶關注公眾號,發送消息的時候,開發者在哪里能接收到這些消息,并做相應的回復呢?
 答案是微信公眾平臺配置的URL的post請求,如果說該URL的get請求是為了配置用的,那么post請求就是為了處理用戶信息。
來看下面一段代碼
通過上面這段代碼,可以看出,所有的消息處理都是在一個post中處理,大致的流程是服務端會接收一段固定格式xml的字符串,具體格式如下:
<xml><ToUserName><![CDATA[${toUser}]]></ToUserName> //接收方<FromUserName><![CDATA[${fromUser}]]></FromUserName> //發送方<CreateTime>${new Date().getTime()}</CreateTime> //發送時間<Event>< ![CDATA[VIEW] ]></Event> //事件類型<MsgType><![CDATA[text]]></MsgType> //消息類型<Content><![CDATA[${content}]]></Content> //內容 </xml>; 復制代碼當接收到xml消息后,用xml2js解析xml,根據Event和MsgType做事件類型的判斷,并做相應的處理,最后,res.send(xml)發送數據的時候也是要一個xml格式的數據,要注意的一點是,ToUserName和FromUserName不要弄錯就可以了!具體的文檔有詳細的解釋,文檔戳這里哦;
好了,今天的內容就講到這里了,剩下還有一些關于生成access_token,還有如何調用js-sdk的內容過兩天更新吧!
 小弟這里有一份react后臺管理腳手架模版,有需要的自取 戳我,戳我,戳我,github
關注
大家好,我是西瓜太郎,小前端一枚,坐標杭州,今天入住掘金,第一次寫文章,如有寫的不適的地方還請大佬多多指教,如有助于八方兄弟,那小弟搬磚將會更加有動力!
轉載于:https://juejin.im/post/5be3af8ae51d4554b54b0a0d
總結
以上是生活随笔為你收集整理的教你如何用node.js开发微信公众号(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: PyQt5:窗口的基本功能
- 下一篇: mysql数据库引擎InnoDB和MyI
