node.js作为微信接口服务器
前端时间用node改写了下去年用Java练习时写的微信接口,可能是因为微信接口看的多了更加熟悉了,也可能是node开发更快速,反正不到一小时就搞定了微信token的验证,放到博客项目中,新增了一个URL请求,在微信公众平台上测试了下,没想到调试两三次就通过了,想当初用Java测试时各种问题不断。想起来可惜的是去年Java版的微信接口做的自定义菜单,自动回复等功能,由于BAE收费的缘故就废掉了。
/**
* Created by huopanpan on 2014/10/10.
*/
var crypto = require("crypto");
/**
* 验证token
* @param req
* @param res
*/
function validateToken(req, res) {
var query = req.query;
var signature = query.signature;//微信服务器加密字符串
var echostr = query.echostr;//随机字符串
var timestamp = query["timestamp"];//时间戳
var nonce = query.nonce;//nonce
var oriArray = new Array();
oriArray[0] = nonce;
oriArray[1] = timestamp;
oriArray[2] = "hale";//token
oriArray.sort();
var original = oriArray[0]+oriArray[1]+oriArray[2];
console.log("Original Str:"+original);
console.log("signature:"+signature);
var scyptoString = sha1(original);//将三个参数拼接加密字符串,并与服务器发送的字符串对比
if (signature == scyptoString) {
res.send(echostr);
}
else {
res.send("Bad Token!");
}
}
/**
* sha1加密
* @param str
* @returns {*}
*/
function sha1(str) {
var md5sum = crypto.createHash("sha1");
md5sum.update(str);
str = md5sum.digest("hex");
return str;
}
/**
* 重新获取access_token
* @type {validateToken}
*/
function getAccessToken(){
var appid = "";
var appsecret = "";
var url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=fdgf&secret=dfdsgfrf";
}
exports.validateToken = validateToken;