微信程式開發系列教程(一)開發環境搭建
1. 您得從微信官方平臺註冊一個微信訂閱號:
2. 這個教程使用nodejs開發微信訂閱號對應的訊息伺服器,因此需要具備基本的nodejs開發技能。
登入微信公眾號平臺 https://mp.weixin.qq.com , 使用選單:Development->Basic configuration:
最重要的是在訂閱號的控制檯裡指定一個訊息伺服器的url。如下圖所示。這個訊息伺服器的url從哪裡來?
我會用nodejs開發一個伺服器,部署到Salesforce的雲平臺Heroku上。
當您的微信訂閱號的粉絲透過微信App同您的訂閱號互動,比如發訊息,或者使用您的微信訂閱號自定義選單時,這些請求就會透過微信App轉發到您的nodejs訊息伺服器上。
但是當您配置的訊息伺服器要真正起作用,還得先透過一個驗證。驗證流程在微信官網上: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5
微信官網上提供的驗證流程的實現是用Python寫的,我提供了一個nodejs版本的實現。
我們在微信訂閱號的控制檯點了Submit按鈕之後,微信框架會傳送一個HTTP請求到你的微信伺服器去,請求明細如下:
server url>/?signature=096abd439b41f9610aeabe2d7534084fd8dafa20&echostr=16168327802220428137×tamp=1512810825&nonce=384289189
您的微信伺服器的職責就是:按照上面流程圖定義的規範,計算根據您微信訂閱號的token(令牌),時間戳和nonce欄位,計算出一個簽名值,然後同發到訊息伺服器的簽名值做對比。如果對比發現兩者不一致,會收到錯誤訊息“Token authentication failed”。
下面是如何用nodejs開發使得訊息伺服器透過驗證流程。
1. 建立一個新的nodejs工程,下列package.json檔案裡高亮部分是用於訊息伺服器通訊的重要部分。
主要的邏輯位於server.js裡。
2. Server.js的主要程式碼:
var express = require('express');var routesEngine = require('./index.js');var app = express(); routesEngine(app); app.listen(process.env.PORT || 3000, function () {console.log('Listening on port, process.cwd(): ' + process.cwd() ); }); In implementation of index.js, now we need to implement verification process:var request = require('request');var jsSHA = require('jssha');module.exports = function (app) { app.route('/').get(function(req,res){var token="jerry"; // replace it with your own tokenvar signature = req.query.signature, timestamp = req.query.timestamp, echostr = req.query.echostr, nonce = req.query.nonce; oriArray = new Array(); oriArray[0] = nonce; oriArray[1] = timestamp; oriArray[2] = token; oriArray.sort();var original = oriArray.join('');var shaObj = new jsSHA("SHA-1", 'TEXT'); shaObj.update(original);var scyptoString = shaObj.getHash('HEX');console.log("calculated string: " + scyptoString);if (signature == scyptoString) { res.send(echostr); } else { res.send('bad token'); } }); };
3. 將該nodejs應用部署到Heroku平臺。具體操作參考Heroku的操作手冊。
部署成功後,到微信訂閱號操作檯點Submit按鈕提交驗證請求,然後在Heroku應用的控制檯上能觀察到我們自己的微信伺服器計算出的signature和微信平臺傳送的signature完全一致,認證透過。
回到訂閱號的操作檯,發現我們的nodejs微信伺服器認證成功,可以做開發了。
後續Jerry會帶來更多微信訂閱號開發的內容。
要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2212450/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微信開發系列之一 - 微信公眾號開發的開發環境搭建開發環境
- 微信小程式開發系列(一) :開發環境搭建和微信小程式的檢視設計與開發微信小程式開發環境
- 微信小程式開發環境搭建微信小程式開發環境
- SAP系統和微信整合的系列教程之一:微信開發環境的搭建開發環境
- Weex開發之路(一):開發環境搭建開發環境
- 基於mpvue框架搭建微信小程式開發環境Vue框架微信小程式開發環境
- JAVA學習系列之一-搭建開發環境Java開發環境
- 安卓開發入門(一)開發環境搭建安卓開發環境
- Android的開發環境搭建教程Android開發環境
- 微信開發的本地除錯環境搭建除錯
- phpwamp開發環境搭建詳解,phpwamp綠色整合環境開發環境一鍵搭建PHP開發環境
- CUDA 開發包安裝 環境搭建 程式開發
- 鴻蒙系統系列教程5-鴻蒙開發環境的搭建鴻蒙開發環境
- 【Flutter】開發之環境搭建(一)Flutter
- QT開發快速入門-教程1:搭建QT開發環境QT開發環境
- Flutter入門教程(二)開發環境搭建Flutter開發環境
- PHP基礎教程-04 開發環境搭建PHP開發環境
- Flutter開發入門之開發環境搭建(VSCode搭建Flutter開發環境)Flutter開發環境VSCode
- 微信開發系列教程(二)
- 1 – 搭建開發環境開發環境
- rollup 開發環境搭建開發環境
- 搭建go開發環境Go開發環境
- Androdi開發環境搭建開發環境
- 前端開發環境搭建前端開發環境
- Theia 開發環境搭建開發環境
- QEMU 開發環境搭建開發環境
- Cordova 開發環境搭建開發環境
- 搭建VUE開發環境Vue開發環境
- 安卓開發環境搭建安卓開發環境
- 搭建Layui開發環境UI開發環境
- 搭建scala開發環境開發環境
- EBS開發環境搭建開發環境
- andriod開發環境搭建,開發環境
- Erlang開發環境搭建開發環境
- Kafka開發環境搭建Kafka開發環境
- Qt開發環境搭建QT開發環境
- GeoServer開發環境搭建Server開發環境
- JAVA開發環境搭建Java開發環境