微信公众号开发及NodeJS+Express技术栈,出坑笔记一

微信已经开发公众号很久了,但是三天前我才开始研究其开发过程,根据前端的经验,选择了NodeJS+Express的开发技术栈,由于对Express缺乏项目经验,一路上遇到了太多的坑,现在开始慢慢都记下来。


一、微信的开发环境配置:

1.微信公众号,前期可以先选择使用微信的测试号进行开发测试,熟悉Express的文件架构,API调用方式,和微信接口的数据格式。

2.URL和TOKEN,这对于新手来讲是个大坑。

首先来说URL的解决方案,因为一开始很可能你并没有服务器和域名支持,特别 对于新手来说,我在此试了很多方案,可以解决的列出来:
1.新浪云或百度云,把你的代码文件传上去,用他们提供的链接做URL,因为我以前用过新浪云而且还欠费了,所以充值缴费才开始使用的;

2.花生壳,免费的内网映射,并给你提供一个域名,但是用起来并不太稳定,尽管我还忍不住充值买域名了,就是想买个好记的,收集癖?

3.Nngrok,听说本来好使,但不知道为啥最近挂掉了,于是用了Natapp,免费,稳定,但是要注册账户,主要阅读新手教程。

好了,选择好之后,注意Express的默认端口是3000,如果要修改在bin文件夹里的WWW改,下来可以把你的127.0.0.1:3000映射到外网了。
然后说TOKEN吧,注意阅读一下微信开发稳定,你就会明白,token就是你设的一个密码,放在代码文件里,这里我选择的是config.json配置文件的方案,然后在app.js中调用,

var config = require('./config/config.json');

具体可以参考这位大牛的博客:http://blog.csdn.net/zzwwjjdj1/article/details/52222137 。我也是站在巨人的肩膀上啊微信公众号开发及NodeJS+Express技术栈,出坑笔记一


二、实现Access-Token的获取

这步我也是主要依照大牛的博客来做的http://blog.csdn.net/zzwwjjdj1/article/details/52222748

但实际上自己遇到一些问题,比如使用redis数据库的时候,由于是使用npm install安装的,在进程服务中并没有启动该数据库,后来在网上找方法是下载该代码包,然后本地再运行起来,网上有很多方法,可以自行搜索。

还有就是获取Access-Token的时候,注意route.get()方法要放到,route.use()之后,另外注释微信认证的中间件,指的是这样在app.js注释

//app.use(utils.sign(config));

另外还要注意一点:use()index

app.use('/', index);

这里要和下面保持一致,即调用参数写'/'

router.get('/', function(req, res, next) {
    console.log(req.accessToken);
    res.render('index', { title: 'Express' });

});

出现下面内容就算是成功了,可以继续前进了。

微信公众号开发及NodeJS+Express技术栈,出坑笔记一


三、实现通信的第一步:
回复消息,公众号的通信流程是这样的:比如用户在公众号中回复1,微信服务器收到,包装成xml格式,传给你的服务器,你的代码经过处理后,再传给微信服务器,最后再回应给用户。注意打印接收的req.weixin的信息,类似这样,为了熟悉了解微信的包装数据

微信公众号开发及NodeJS+Express技术栈,出坑笔记一微信公众号开发及NodeJS+Express技术栈,出坑笔记一

主要方法可参考博客http://blog.csdn.net/zzwwjjdj1/article/details/52367925

注意weichat的use调用这样写:

app.use('/',wechat);

到这里算是你的一小步,人类的一大步啊! 后面还有坑慢慢填吧。欢迎和我探讨!