背景

使用 NodeJS 进行微信公共号开发,首先需要响应微信发送的Token验证,官方文档

填写服务器配置

登录微信公共平台,在开发下的基本配置打开该页面。

依次填写接口的 URL、自定义的 Token、点击随机生成生成 EncodingAESKey、将消息加密方式选择为明文模式,点击提交时微信会进行服务器的 Token 验证。

响应微信发送的Token验证

项目使用 express 开发,中间件 wechatAuth 如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var app = express();

const crypto = require('crypto');
const url = require('url'); //进行sha1加密
function sha1(str) {
let shasum = crypto.createHash("sha1");
return shasum.update(str,'utf-8').digest("hex");
} function wechatAuth(req, res) {
let signature = req.query.signature;
let echostr = req.query.echostr;
let timestamp = req.query.timestamp;
let nonce = req.query.nonce; let reqArray = [nonce, timestamp, process.env.WX_TOKEN]; // process.env.WX_TOKEN对应填写服务器配置内的 Token reqArray.sort(); //对数组进行字典排序
let sortStr = reqArray.join(''); //连接数组
let sha1Str = sha1(sortStr.toString().replace(/,/g,""));
if (signature === sha1Str) {
res.end(echostr);
} else {
res.end("false");
console.log("授权失败!");
}
} app.use('/wx/token',wechatAuth); // 对应填写服务器配置内的 URL

服务器上线后点击基本配置打开该页面内的提交即可

NodeJS 微信公共号开发 - 响应微信发送的Token验证(山东数漫江湖)的更多相关文章

  1. c#微信公众号开发一----基本设置,服务器配置token验证,获取timestamp/nonce/signature

    一.c#微信公众号开发----基本设置 参考微信官方文档 https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Acce ...

  2. ASP.NET MVC 微信公共平台开发之 微信接入

    ASP.NET MVC 接入微信公共平台 申请微信公共账号 既然要接入微信公共平台,微信公共号是必须的(当然如果只是测试的话也可以申请微信公共平台接口测试账号),来这里微信公共平台 申请微信公共号(注 ...

  3. 微信公众号开发 [05] 微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

  4. Java 微信公众号开发--- 接入微信

    开发微信公众号在没有正式的公众平台账号时,我们可以使用测试平台账号--- 测试平台申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandb ...

  5. 微信公众号开发之微信JSSDK

    概述 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微 ...

  6. 微信公众号开发笔记1-获取Access Token

    获取你的Access Token a)可以采用网址的形式: 用appid和appsecert获得access token,接口为https://api.weixin.qq.com/cgi-bin/to ...

  7. 微信公共号的PHP开发(基础篇)——玩一下

    最近没事儿开了个微信号,写点东西给家人啊什么的看,你们想看的话就这个嘛: 然后就意外的看到imooc上的微信公众号开发相关了.每天科研的累累的,做点这个不是很累的东西吧. 微信公共号开发 一.基础 1 ...

  8. 如何将 Microsoft Bot Framework 链接至微信公共号

    说到 Microsoft Bot Framework 其实微软发布了已经有一段时间了,有很多朋友可能还不太了解,微软Bot的功能今天我给大家简单的介绍一下,Bot Framework的开发基础以及如何 ...

  9. Microsoft Bot Framework 链接至微信公共号

    如何将 Microsoft Bot Framework 链接至微信公共号   说到 Microsoft Bot Framework 其实微软发布了已经有一段时间了,有很多朋友可能还不太了解,微软Bot ...

随机推荐

  1. iOS开发allocWithZone介绍

    首先我们知道,我们需要保证单例类只有一个唯一的实例,而平时我们在初始化一个对象的时候, [[Class alloc] init],其实是做了两件事. alloc 给对象分配内存空间,init是对对象的 ...

  2. TCP系列24—重传—14、F-RTO虚假重传探测

    一.虚假重传 在一些情况下,TCP可能会在没有数据丢失的情况下初始化一个重传,这种重传就叫做虚假重传(Spurious retransmission).发生虚假重传的原因可能是包传输中重排序.传输中发 ...

  3. Qt Creator子目录项目-类似VS解决方案

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt Creator子目录项目-类似VS解决方案     本文地址:http://techie ...

  4. PHP连接Redis操作函数

    phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系 很有用;以下是redis官方提供的命令使用技巧: 下载地址如下: https://github.com/ow ...

  5. 转:Conjugate prior-共轭先验的解释

    Conjugate prior-共轭先验的解释    原文:http://blog.csdn.net/polly_yang/article/details/8250161 一 问题来源: 看PRML第 ...

  6. 【题解】CF#229 E-Gifts

    尽管是一道E题,但真心并不很难~不难发现,有一些物品是一定要被选择的,我们所需要决策的仅仅只有那几个有重复价值的物品. 而不同名字之间的概率并不互相影响,所以我们有 \(f[i][j]\) 表示名字为 ...

  7. 【刷题】BZOJ 2179 FFT快速傅立叶

    Description 给出两个n位10进制整数x和y,你需要计算x*y. Input 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数为n的正整数y. Output 输出 ...

  8. [洛谷P4717]【模板】快速沃尔什变换

    题目大意:给定多项式$A$和$B$,求$C$满足: $$C_n=\sum\limits_{x\oplus y=n}A_xB_y$$ 其中$\oplus$为位运算($or,and,xor​$) 题解:$ ...

  9. redux的一些插件总结(redux-actions,reselect)

    redux本身还是过于简单,实际使用的时候需要配合许多插件. 下面是一些插件与vuex的功能对比 redux-actions <=> vuex的mutation的写法 reselect & ...

  10. 51nod 1217 Minimum Modular(数论+暴力)

    根据抽屉原理显然m>=(n-K) 于是在[n-K,max(a1..an)+1]的范围中枚举m 考虑K=0的做法... 如果a[i]≡a[j](mod m),则有m|(a[i]-a[j]),只要O ...