nodejs----微信註冊測試號獲取token

var PORT=8081;                 //監聽8080端口號
var http=require('http');  
var qs=require('qs');
var TOKEN='yezhenxu';           //必須與測試號所填寫的Token相同

function checkSignature(params,token){
    var key=[token,params.timestamp,params.nonce].sort().join(''); 
     //將token (本身設置的) 、timestamp(時間戳)、nonce(隨機數)三個參數進行字典排序
    var sha1=require('crypto').createHash('sha1');
     //將上面三個字符串拼接成一個字符串再進行sha1加密
    sha1.update(key);
    return sha1.digest('hex') ==params.signature;
     //將加密後的字符串與signature進行對比,若成功,返回echostr
}

var server=http.createServer(function (request,response) {
   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('signature fail');
    }

    if (request.method == "GET") {
        //若是請求是GET,返回echostr用於經過服務器有效校驗
        response.end(params.echostr);
    }else{
        //不然是微信給開發者服務器的POST請求
        var postdata='';
        request.addListener("data",function(postchunk){
            postdata+=postchunk;
        });
        //獲取到了POST數據
        request.addListener("end",function(){
            console.log(postdata);
            response.end('success ');
        });
    }
});

server.listen(PORT, function () {
    console.log('Server running at port:'+PORT);
});
相關文章
相關標籤/搜索