node.js微信公眾平台開發教程,node.js公眾

來源:互聯網
上載者:User

node.js公眾平台開發教程,node.js公眾

用nodejs怎樣來實現對公眾平台的開發呢?

  別的就不多說了,先來簡單介紹公眾平台的基本原理。

  伺服器就相當於一個轉寄伺服器,終端(手機、Pad等)發起請求至伺服器,伺服器,然後將請求轉寄給自訂服務(這裡就是我們的具體實現)。服務處理完畢,然後轉寄給伺服器,伺服器再將具體響應回複到終端;通訊協定為:HTTP;資料格式為:XML。
  具體的流程如所示:

  其實,我們需要做的事情,就是對HTTP請求,做出響應。具體的請求內容,我們按照特定的XML格式去解析,處理完畢後,也要按照特定的XML格式返回。

平台註冊

  要想完成對公眾平台的開發,我們需要註冊一個公眾平台帳號。註冊步驟如下:
  開啟公用平台的官網,https://mp.weixin.qq.com/,點擊“立即註冊”。

  然後根據提示,填寫基本資料,郵箱啟用,選擇類型,資訊登記,公眾號資訊,完成註冊。

  在註冊完成以後,我們要對公眾號進行一些基本的設定。登入公眾號,找到【公眾號設定】,然後設定頭像以及其它資訊。

nodejs環境搭建

  我們需要在公網上找一台伺服器,以便可以啟動我們的nodejs的環境,啟動環境後通過設定訪問地址,我們就可以接收伺服器發送的訊息了,並且我們也可以向伺服器發送訊息了。

  在公網的伺服器中安裝完成nodejs以後,我們還需要安裝一些nodejs所用到的模組,如:express,node-xml,jssha等模組。可以通過npm命令進行安裝。

  我們通過nodejs來實現向伺服器訊息的發送與接收,以及與伺服器的簽名認證。

  在我們右面的編輯環境中已經為同學們安裝了nodejs環境。我們在接下來內容中就為同學們來實現伺服器的簽名認證。

建立express架構

  我們在前面的課程中已經安裝了express模組,並且在我們右面的環境中已經建立了一個名為app.js的檔案。現在我們就在這個檔案中完成express架構。如下代碼:

var express = require("express");var path=require('path');var app = express();server = require('http').Server(app);app.set('views',__dirname);  // 設定視圖 app.set('view engine', 'html'); app.engine( '.html', require( 'ejs' ).__express );require('./index')(app);   //路由設定檔server.listen(80,function(){console.log('App start,port 80.');});

然後再添加一個名為test.html的檔案。寫入以下內容

<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title>匯智網</title></head><body><div><%=issuccess%></div></body></html>

  我們還要添加一個名為index.js的檔案,來實現我們的路由。點擊編輯環境中的添加檔案按鈕,添加檔案,然後我們寫入以下代碼,其中GET請求用來驗證配置的URL合法性,POST請求用來處理訊息。

module.exports = function(app){app.get('/',function(req,res){res.render('test',{issuccess:"success"})});app.get('/interface',function(req,res){});app.post('/interface',function(req,res){});}

這樣我們需要的express架構就完成了,當然我們還可以添加public公用檔案夾以及我們要用到的中介軟體。儲存檔案,點擊【提交運行】,然後點擊【訪問測試】,去試試吧。記下訪問測試的地址,我們將在下一節中會用到該地址。

伺服器配置

  我們登入公眾平台,在開發人員模式下面找到基本配置,然後修改伺服器配置。:

  首先URL要填寫公網上我們安裝nodejs接收與發送資料的路徑。我們可以填寫上節中【訪問測試】的地址,然後加上對應的路由就可以了。

  Token要與我們自訂伺服器端的token一致。填寫完成以後,就可以點擊提交了,在提交以前,我們啟動app.js(點擊【提交運行】)。這樣根據我們的路由匹配就可以驗證簽名是否有效了。

  當配置完成以後,一定要啟用配置。

網址接入

  公眾平台使用者提交資訊後,伺服器將發送GET請求到填寫的URL上,並且帶上四個參數:

  參數                     描述
  signature            加密簽名
  timestamp            時間戳記
  nonce                隨機數
  echostr              隨機字串

  開發人員通過檢驗signature對請求進行校正(下面有校正方式)。若確認此次GET請求來自伺服器,請原樣返回echostr參數內容,則接入生效,否則接入失敗。

  signature結合了開發人員填寫的token參數和請求中的timestamp參數、nonce參數。

加密/校正流程:

1、將token、timestamp、nonce三個參數進行字典序排序;
2、將三個參數字串拼接成一個字串進行sha1加密;
3、開發人員獲得加密後的字串可與signature對比,標識該請求來源於。
參數排序

  首先我們確認請求是來自伺服器的get請求,那麼就可以在index.js檔案中進行添加代碼了。然後在app.get(‘/interface',function(req,res){});的function中進行添加。

  先來擷取各個參數的值,如下代碼:

var token="weixin";var signature = req.query.signature;var timestamp = req.query.timestamp;var echostr  = req.query.echostr;var nonce   = req.query.nonce;

我們在這裡對token進行設定,讓其與伺服器中設定的token一致。

然後對其中的token、timestamp、nonce進行排序,如下代碼:

var oriArray = new Array();oriArray[0] = nonce;oriArray[1] = timestamp;oriArray[2] = token;oriArray.sort();

這樣我們就完成了排序。

參數加密

  在上節中我們已經對參數進行了排序,然後我們在這一節中要將參數組成一個字串,進行SH-1加密。在加密以前要用到jssha模組,在我們的檔案中要引用該模組。

var jsSHA = require('jssha');

在上一節課中我們已經對參數排序完成,並存放在數組中,我們可以通過join方法來產生一個字串,如下代碼:

var original = oriArray.join('');

最後對該資料進行加密,如下代碼:

var jsSHA = require('jssha');var shaObj = new jsSHA(original, 'TEXT');var scyptoString=shaObj.getHash('SHA-1', 'HEX'); 

好了這樣就產生了我們需要的簽名字串scyptoString。

簽名對比

  我們已經得到了我們想要的簽名字串scyptoString,然後我們就可以與來自伺服器的簽名進行對比了,對比通過,則我們就可以接收與發送訊息了。

 if(signature == scyptoString){ //驗證成功 } else { //驗證失敗 }

以上就是本文的全部內容,希望對大家的學習有所協助

您可能感興趣的文章:
  • 使用Nodejs開發公眾號後台服務執行個體
  • 使用NodeJs 開發公眾號(三)事件互動執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.