V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Brylew
V2EX  ›  Node.js

Node.js 实现微信 Token 验证

  •  
  •   Brylew · 2015-09-06 02:39:01 +08:00 · 4007 次点击
    这是一个创建于 3396 天前的主题,其中的信息可能已经有所发展或是发生改变。

    通过原生 Node.js 实现微信 Token 验证。

    //引入必要包
    var http = require ('http'),
        url = require ('url'),
        crypto = require ('crypto');
    
    //创建服务器
    http.createServer (function (req, res ) {
        res.writeHead (200, {
            'Content-Type': 'text/html; charset=UTF-8'
        });
    
        // 参数转 sha1 的一系列处理
        var query = url.parse (req.url, true ).query,
            token = 'YOUR TOKEN',
            array = [token, query.timestamp, query.nonce],
            key = array.sort ().join (''),
            sha1 = crypto.createHash ('sha1').update (key ).digest ('hex');
        // sha1 处理结束
    
        if (sha1 == query.signature ) {
            res.write (query.echostr ); // 返回 echostr 实现验证
        } else {
            res.write ('Error, Token verification failed.'); // 返回错误信息
        }
        res.end ();
    }).listen ('62002'); // 监听端口,通过 Apache 或者 Nginx 转发,微信只支持 80 端口。
    

    这个是新人贴。:)

    4 条回复    2015-09-07 00:24:52 +08:00
    zonghua
        1
    zonghua  
       2015-09-06 09:03:06 +08:00 via iPhone
    咦,我记得验证是需要两步的,还要一个链表翻转
    song940
        2
    song940  
       2015-09-06 09:32:38 +08:00 via iPhone
    Brylew
        3
    Brylew  
    OP
       2015-09-07 00:24:01 +08:00
    @zonghua 这只适用于初始化验证,没有进一步进行扩展封装。
    Brylew
        4
    Brylew  
    OP
       2015-09-07 00:24:52 +08:00
    @song940 看着像一款非常 nice 的一个 package
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4835 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 09:59 · PVG 17:59 · LAX 01:59 · JFK 04:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.