Node.js 实现微信 Token 验证

2015-09-06 02:39:01 +08:00
 Brylew

通过原生 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 端口。

这个是新人贴。:)

3973 次点击
所在节点    Node.js
4 条回复
zonghua
2015-09-06 09:03:06 +08:00
咦,我记得验证是需要两步的,还要一个链表翻转
song940
2015-09-06 09:32:38 +08:00
Brylew
2015-09-07 00:24:01 +08:00
@zonghua 这只适用于初始化验证,没有进一步进行扩展封装。
Brylew
2015-09-07 00:24:52 +08:00
@song940 看着像一款非常 nice 的一个 package

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/218474

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX