php微信墙开发,Node.js如何开发微信墙
這次給大家?guī)鞱ode.js如何開發(fā)微信墻,Node.js開發(fā)微信墻的注意事項有哪些,下面就是實戰(zhàn)案例,一起來看一下。
驗證服務(wù)器有效性
接收用戶通過微信訂閱號發(fā)給服務(wù)器的消息
解析收到的XML文本消息格式為JSON
用模板構(gòu)造應(yīng)答用戶的XML文本消息
將接收到的消息通過WebSocket服務(wù)廣播
獲取消息發(fā)送人的用戶基本信息(名字和頭像)
微信服務(wù)大體上分為兩類,一類是消息服務(wù),一類是數(shù)據(jù)服務(wù)。
消息服務(wù)是由用戶在微信服務(wù)號中發(fā)送消息,然后微信服務(wù)講消息推送給開發(fā)者服務(wù)器,因此它是由微信主動發(fā)起,開發(fā)者服務(wù)器被動接收的。
消息服務(wù)的數(shù)據(jù)體格式是XML,微信服務(wù)與開發(fā)者服務(wù)器之間通過約定token保證數(shù)據(jù)傳輸?shù)恼鎸嵑陀行浴?/verify.jsvar PORT = 9529;var http = require('http');var qs = require('qs');var TOKEN = 'yuntu';function c
heckSignature(params, token){ //1. 將token、timestamp、nonce三個參數(shù)進行字典序排序
//2. 將三個參數(shù)字符串拼接成一個字符串進行sha1加密
//3. 開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信var key = [token, params.timestamp, params.nonce].sort().join(''); var sha1 = require('crypto').createHash('sha1');
sha1.update(key);
return sha1.digest('hex') == params.signature;
}var server = http.createServer(function (request, response) {
//解析URL中的query部分,用qs模塊(npm install qs)將query解析成json
var query = require('url').parse(request.url).query; var params = qs.parse(query); console.log(params); console.log("token-->", TOKEN);
if(checkSignature(params, TOKEN)){
response.end(params.echostr);
}else{
response.end('signature fail');
}
});
server.listen(PORT);console.log("Server runing at port: " + PORT + ".");
事實上,token驗證僅用來給開發(fā)者服務(wù)器驗證消息來源確實是微信,而不是偽造的(因為別人不知道具體的token),作為消息發(fā)起方的微信并不要求必須驗證,也就是說,開發(fā)者也可以偷懶不做驗證(后果是別人可以模仿微信給服務(wù)post請求)。//noverify.js/**
TOKEN 校驗是保證請求的真實有效,微信自己并不校驗TOKEN,
開發(fā)者服務(wù)器也可以不校驗直接返回echostr,
但是這樣的話意味著第三方也可以很容易偽造請求假裝成微信發(fā)送給開發(fā)者服務(wù)器*/var PORT = 9529;var http = require('http');var qs = require('qs');var server = http.createServer(function (request, response) { var query = require('url').parse(request.url).query; var params = qs.parse(query);
response.end(params.echostr);
});
server.listen(PORT);console.log("Server runing at port: " + PORT + ".");
將微信服務(wù)號的服務(wù)器配置為開發(fā)服務(wù)器的URL,就可以接收到微信服務(wù)號的消息了
相信看了本文案例你已經(jīng)掌握了方法,更多精彩請關(guān)注php中文網(wǎng)其它相關(guān)文章!
推薦閱讀:
總結(jié)
以上是生活随笔為你收集整理的php微信墙开发,Node.js如何开发微信墙的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mvc php session,PHP
- 下一篇: php函数计算加法,JavaScript