1. 程式人生 > >微信平臺開發之token驗證

微信平臺開發之token驗證

以前一直做過微信的開發,畢竟微信開發是現在廣大程式猿不得不做的一個開發。其中包括微信的支付,微信的oauth登入。但是一直都沒有系統的去完成過一個微信的所有開發,略有遺憾。最近自己申請了一個微信的訂閱號,下面記錄下,微信的Token驗證吧。

進行微信公眾平臺的開發,進行token驗證是第一步,如下圖所示。url填寫自己的伺服器地址。Token這裡可以自定義,但是要和程式碼中的Token保持一致。

驗證程式碼如下:

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進行比對,如果相同,則是來自微信的請求,反之則不是。在配置完了後,本來進行其他開發。到最後發現個人申請的訂閱號並不能進行認證,所以,這次只能再忍著了。以後公司有類似的資源的話,再做吧。