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的生命周期是俩个小时)

如果不出意外,我相信大家可以出现配置成功消息,之后通过微信关注测试公众号就可以在报文中查看消息,想要更多测试可以使用在线调试工具,但对于新人讲建议理解整个流程并实践为好,下一章节将描述如何来调用自定义菜单接口开发。






1 1
原创粉丝点击