JS-SDK 要点

  1. 微信测试号; 扫码登录;无需认证(只是名称统一为微信测试号)
    http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

  2. JS-SDK 说明文档
    http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.BF.E7.94.A8.E6.AD.A5.E9.AA.A4

  3. 签名验证

    获取token

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function getToken(config, cb) {
var tokenUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appId=' + config.appId + '&secret=' + config.appSecret;
request.get(tokenUrl, function(error, response, body) {
if (error) {
cb('getToken error', error);
}
else {
try {
var token = JSON.parse(body).access_token;
cb(null, token);
}
catch (e) {
cb('getToken error', e);
}
}
});
}

获取ticket

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function getNewTicket(token, cb) {
request.get('https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=' + token + '&type=jsapi', function(error, res, body) {
if (error) {
cb('getNewTicket error', error);
}
else {
try {
var ticket = JSON.parse(body).ticket;
cb(null, ticket);
}
catch (e) {
cb('getNewTicket error', e);
}
}
});
}

生成JS-SDK权限验证的签名了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function getTimesTamp() {
return parseInt(new Date().getTime() / 1000) + '';
} function getNonceStr() {
return Math.random().toString(36).substr(2, 15);
} var timestamp = getTimesTamp();
var noncestr = getNonceStr();
var str = 'jsapi_ticket=' + result + '&noncestr='+ noncestr+'&timestamp=' + timestamp + '&url=' + u;
console.log(str);
var signature = crypto.createHash('sha1').update(str).digest('hex');
cb(null, {
appId: config.appId,
timestamp: timestamp,
nonceStr: noncestr,
signature: signature
});

踩过的坑

  1. 官方提供的 微信 JS 接口签名校验工具http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign中有一句话对于没有只有域名没有 path 的 URL ,浏览器会自动加上 / 作为 path,如打开 http://qq.com 则获取到的 URL 为 http://qq.com/)我很2的在所有URL最后加入 / (┬_┬);
  2. timesTamp 为 parseInt(new Date().getTime() / 1000) + '';
  3. JS接口安全域名配置中,是配置域名+端口,不是网址!!
    所以 416973.dowei8.com:21119/tt 类似的网址只能配置为dowei8.com:21119
  4. 微信有缓存…. 有时是缓存问题………

完整代码

下载地址: http://git.oschina.net/xinshangshangxin/node_JS-SDK_signature

映射外网/上传服务器
npm install 安装依赖包
node index.js 运行主程序
配置 JS接口安全域名
微信访问

参考文档

node JS 微信开发的更多相关文章

  1. node.js 微信开发2-消息回复、token获取、自定义菜单

    项目结构 >config/wechat.json 微信公众号的配置文件 >controllers/oauth.js 微信网页授权接口(下一篇再细讲讲) >controllers/we ...

  2. node.js 微信开发1-接入

    准备工作1 域名准备 无论是个人开发还是做公司项目域名都是必不可少的 前期我个人用过花生壳做个开发测试,挺好用的,就是现在要收费了,开通花生壳要收费,开通内网穿透要收费(为啥要内网穿透呢,因为微信接入 ...

  3. node.js 微信开发3-网页授权

    1.配置公众号的自定义菜单,如 { "button":[ { "type":"view", "name":"公 ...

  4. vue+node.js+webpack开发微信公众号功能填坑——v -for循环

    页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...

  5. 4.Node.js 微信消息管理

    一.写在前面的话   当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应.   消息推送也是 ...

  6. node.js之开发环境搭建

    一.安装linux系统 (已安装linux可跳此步骤) 虚拟机推荐选择:VirtualBox 或者 Vmware (专业版永久激活码:5A02H-AU243-TZJ49-GTC7K-3C61N) 我这 ...

  7. AngularJS + Node.js + MongoDB开发

    AngularJS + Node.js + MongoDB开发的基于位置的通讯录(by vczero) 一.闲扯 有一天班长说了,同学们希望我开发一个可以共享位置的通讯录,于是自己简单设计了下功能.包 ...

  8. Ubuntu 14.04下搭建Node.js的开发环境

    最近想找一个轻量级且支持快速开发的服务开发平台,选来选去选择了Node.js,当时有几种选择: Python + Django(用过Django,虽然开发快速,但是感觉性能并不太好). Ruby + ...

  9. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

随机推荐

  1. Bzoj2038 小Z的袜子(hose)

    Time Limit: 20000MS   Memory Limit: 265216KB   64bit IO Format: %lld & %llu Description 作为一个生活散漫 ...

  2. 转 PV操作简单理解

    传送门 PV操作简单理解 进程通常分为就绪.运行和阻塞三个工作状态.三种状态在某些条件下可以转换,三者之间的转换关系如下: 进程三个状态之间的转换就是靠PV操作来控制的.PV操作主要就是P操作.V操作 ...

  3. buffer和cache怎么让你们解释的那么难理解?

    对于一个即将踏上“系统运维”或者更加高大尚的工作“系统调优”,如果这不跟这两哥们搞好关系了,坑的不只有内存,更坑的是你拿着调优的钱却干着随时被调的活.因为作为一个系统运维人员来说监控和优化IO性能这是 ...

  4. kafka优化–JVM参数配置优化

    https://blog.csdn.net/u013063153/article/details/73826403

  5. python学习之-- 故障记录汇总

    以下为我编程期间遇到的错误并进行记录,起始时间2017-6-21 时间:2018/11/21问题现象:ajax 执行异步提交后,在访问日志看出现了2次post执行分析:默认ajax提交是执行一次,然后 ...

  6. 洛谷—— P2880 [USACO07JAN]平衡的阵容Balanced Lineup

    https://www.luogu.org/problemnew/show/P2880 题目背景 题目描述: 每天,农夫 John 的N(1 <= N <= 50,000)头牛总是按同一序 ...

  7. socket的accept: Invalid argument问题

    void local_sdk_server::wait_remote_client_connect_and_comm() { /*服务器服务启动,等待客户端的链接的到来*/ //sockaddr_in ...

  8. 缓存区溢出检测工具BED

    缓存区溢出检测工具BED   缓存区溢出(Buffer Overflow)是一类常见的漏洞,广泛存在于各种操作系统和软件中.利用缓存区溢出漏洞进行攻击,会导致程序运行失败.系统崩溃.渗透测试人员利用这 ...

  9. [UOJ#24]【IOI2014】Rail

    #24. [IOI2014]Rail 台湾有一个连接着岛的东.西两岸的庞大的铁路线.这个铁路线包含有 mm 个区段.这些相连的区段以数字 0,…,m−10,…,m−1 为编号,且编号由西端开始.每一个 ...

  10. redis 延迟消息

    1.查询下redis 是否打开了键空间通知功能 发现打开了,如果没有打开可以在执行下 我们可以看到参数设置 2.订阅下键空间或者事件通知 订阅键空间:subscribe __keyspace@0__: ...