美文网首页Node.js
nodejs实现微信服务器接入认证

nodejs实现微信服务器接入认证

作者: IT小C | 来源:发表于2016-04-29 17:36 被阅读644次

    填写完了开发者中心中的URL后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

    参数 描述
    signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    timestamp 时间戳
    nonce 随机数
    echostr 随机字符串

    开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

    加密/校验流程如下:

    1. 将token、timestamp、nonce三个参数进行字典序排序
    2. 将三个参数字符串拼接成一个字符串进行sha1加密
    3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
    var crypto = require("crypto");
    exports.wechat = function (req, res) {
        var echostr, nonce, signature, timestamp;
        signature = req.query.signature;
        timestamp = req.query.timestamp;
        nonce = req.query.nonce;
        echostr = req.query.echostr;
        if(check(timestamp,nonce,signature,your_token)){
            return res.send(echostr);
        }else{
            return res.end();
        }
    };
    
    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;
    };
    

    具体步骤参考微信公众平台官方开发文档
    http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html

    相关文章

      网友评论

        本文标题:nodejs实现微信服务器接入认证

        本文链接:https://www.haomeiwen.com/subject/pmfkrttx.html