node.js微信公眾平臺開發之Token驗證
阿新 • • 發佈:2019-02-11
進行微信公眾平臺的開發,進行token驗證是第一步,如下圖所示。url填寫自己的伺服器地址。Token這裡可以自定義,但是要和程式碼中的Token保持一致。
node.js程式碼如下:
var crypto = require('crypto'); var url = require('url'); exports.wechat = function(req,res){ var query = url.parse(req.url,true).query; var signature = query.signature; var timestamp = query.timestamp; var nonce = query.nonce; var echostr = query.echostr; if(check(timestamp,nonce,signature,"weixin")){ res.end(echostr); }else{ res.end("It is not from weixin"); } }; function check(timestamp,nonce,signature,token){ var currSign,tmp; tmp = [token,timestamp,nonce].sort().join(""); currSign = crypto.createHash("sha1").update(tmp).digest("hex"); return (currSign === signature); };
獲取url中包含的signature,timestamp,nonce,echostr。然後將token,timestamp,nonce按照字典序排列。並且加密,再與接收到的signature進行比對,如果相同,則是來自微信的請求,反之則不是。