node.js微信开发《一》
来源:互联网 发布:java获取项目路径 编辑:程序博客网 时间:2024/05/16 07:44
node.js微信开发《一》
工作快一年了,第一次写技术文档,其实很多时候想写但是没有精力去弄,主要是写的东西技术含量没人家高,而且相关技术文档一大把,毕竟菜鸟还是多看多做。废话不多说,直接进入主题(这是一句很流行的话语啊,嘿嘿)。
微信公众号申请就不多说,第一个问题:我相信对于大多数自学的同学和学生局限于个人订阅号,这对于我们开发者而言是很不利,因为很多权限没有。所有我这里提供的方法是在微信公众号里开发者工具公众平台测试帐号申请。第二个问题:对于公众号的url及js_sdk域名绑定。腾讯对于我们开发者想的还是挺周到的,使用qq浏览器中的微信调试工具不但解决外网问题还解决域名问题。微信公众号本地调试。
node.js服务器搭建,我这里使用的是express框架,使用其中的ejs引擎(自己之前对jsp熟悉,个人觉得这个比jade容易上手),具体怎么搭建我就不多说,这个比较容易。在安装过程中遇到问题大多数是版本问题,只需要在安装模块后面加上@x.x.x相对应版本号就行,最后我会上传整体代码。
现在准备工作做好了,准备开工进入敲代码中。首选是将服务器与微信公众号连接起来这里需要url与token,这个还是以开发文档步骤来如何获取token。
上代码吧:
app.js
/** * Module dependencies. */var express = require('express') , routes = require('./routes');var app = module.exports = express.createServer();// Configurationapp.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(__dirname + '/public'));});app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));});app.configure('production', function(){ app.use(express.errorHandler());});// Routesapp.get('/', routes.index);app.listen(3888);console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
这个对于会的node.js的应该都看得懂,就不多介绍。
主要文件在于index.js
/* * GET home page. */var http = require("http");var url = require("url");var crypto = require("crypto");function sha1(str){ var md5sum = crypto.createHash("sha1"); md5sum.update(str); str = md5sum.digest("hex"); return str;}exports.index = function(req, res){ var query = url.parse(req.url,true).query; var signature = query.signature; var echostr = query.echostr; var timestamp = query['timestamp']; var nonce = query.nonce; var oriArray = new Array(); oriArray[0] = nonce; oriArray[1] = timestamp; oriArray[2] = "Sx6oTafLB5w4DiFcYBWgg1JX8J8NcnIXstSeUq9Mql94Vhc1AFb_Ll5AGB9oYJZpLi9RoswXUOfqLETacuo5h6XyIlbGlEiawEQs3jVdiy_6QndYt6nOnBw9bCt-p2WVBJBjAAATBT";//这里是你在微信开发者中心页面里填的token,而不是**** oriArray.sort(); var original = oriArray.join(''); console.log("Original str : " + original); console.log("Signature : " + signature ); var scyptoString = sha1(original); if(signature == scyptoString){ res.end(echostr); console.log("Confirm and send echo back"); }else { res.end("false"); console.log("Failed!"); }};
以上部分代码是参考大神的,自己整合在自己项目中。在此谢谢那位大神的共享。
(注意:将自己获取的token替换上面的值,提醒下,token的生命周期是俩个小时)
如果不出意外,我相信大家可以出现配置成功消息,之后通过微信关注测试公众号就可以在报文中查看消息,想要更多测试可以使用在线调试工具,但对于新人讲建议理解整个流程并实践为好,下一章节将描述如何来调用自定义菜单接口开发。
- node.js微信开发《一》
- Node.js微信开发-1
- Node.js微信公众号开发
- 使用Node.js搭建微信支付后台(一)
- 微信公众平台开发 Node.js SDK
- 微信开发(二)设置微信回调服务器 ( Node.js )
- 用node.js进行微信公众平台的开发
- node js 微信公众号,模板消息开发测试
- 7天搞定Node.js微信公众号开发
- node.js微信公众平台开发之Token验证
- 1.Node.js 接入微信公众平台开发
- 2017最新Node.js开发微信公众号视频教程
- 微信公众平台开发:高级篇(Node.js发送微信 获取fakeID)
- android 微信支付 + node.js 服务端
- node.js连接微信企业号
- 3.Node.js 自定义微信菜单
- 4.Node.js 微信消息管理
- Node.js-威富通H5微信支付
- 关于ListView 中有head的时候,有事件要处理的时候,
- 开发Windows性能计数器提供程序
- apache mina : 用户自定义数据存储
- 详解Nginx配置nginx.conf
- [leetcode] 235. Lowest Common Ancestor of a Binary Search Tree
- node.js微信开发《一》
- 开始写博客了(´・_・`)
- Java网络编程(一)流
- iOS中UIViewController生命周期和响应者链
- PAT_Basic 1019
- Swift的一些基本属性3 (可选项)
- Linux下套接字详解(七)----线程池accept处理高并发connect
- SEO 优化——长尾关键词
- iOS开发之自定义键盘(一)