NodeJS之微信开发

...

由于工作原因,太久没有写博客了,惭愧。

一直在说要买云服务器,前几天终于买了3个月,拿到之后就开始玩我最爱的nodejs,每天都是搞到12点1点过,乐此不疲啊。

从昨天开始玩的微信公众号,到今天算是真正意义上的打通了,先说一下服务器Token的验证:

Token的验证表明了你是开发者,并且你所拥有的用户群体发送的消息确保是发送到你的服务器上的。(我是这样理解的)

网上百度微信Token的验证,参差不齐,都是你抄袭我我抄袭你的这样,而我不是。

下面开始Token的验证,如下图:

                      微信基本配置首先你要填写你的服务器地址URL,这个URL表示你的服务器的公网ip或者是公网ip所映射到的域名。

然后填写Token,这个Token是你自由发挥的,收发消息的时候需要用到。

然后下面那个随机串随机生成,就那么简单就配置好了。

...

excuse me??? 黑人问号脸,那么简单?我没有看错吧...

真的就是那么简单,那么精髓来了,划重点敲黑板了:

在你的服务器上需要实现对Token的验证,也就是说当我们点击下面提交的时候,你的服务器需要接收到微信给你发来的验证消息,表示我们两个能够正常通信。

在微信的文档上面有PHP的教程,然而我是用的NodeJS,百度了一下,大约有5-6页是说的验证Token的方法,随便找了一篇,启动服务之后,点击提交按钮,验证成功。

 

期间还有一个小插曲,就是那个URL只支持80端口和443端口,其中80端口是默认端口,443端口表示https的端口,那么问题就来了,是不是每个人的服务器的80端口都是空闲的?是不是每个人都愿意把80端口(菊花)奉献出来?我当然是不愿意的!!!那么问题就来了,我要怎么去填写这个URL呢,于是乎我想到了很久以前就听说的一个名词:Nginx,开始各种百度它了,了解它的使用和配置,网上也是千篇一律,配置过程我也就省略了,简单写一下吧

server {
        listen       80; #监听80端口
        server_name  nidefuwuqi.com; #设置服务名称
        
        location / {
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   Host      $http_host;
            proxy_pass http://127.0.0.1:8080; #这个8080端口就是我nodejs的端口
        }
}

配置好之后,你就可以直接在网上访问http://nidefuwuqi.com不用带端口,Nginx会把80端口映射到你的8080端口上面,然后你就可以快快乐乐的在微信服务器配置上面把你的服务器地址填写上去了。

一切就绪,点击提交进行Token认证,认证成功皆大欢喜,认证失败分析问题,直到问题解决。

认证成功之后开始正式的微信公众号的开发,我用的是一致好评的wechat模块,根据官方文档配置之后,顺利完成文字的接收和回复,其他功能也类似,暂时没做,因为时间已经12点半了我也需要睡觉明天还要上班...

其中的一段代码我要提一下,

app.use(express.query());
app.use('/wechat', wechat(config, function (req, res, next) {})

就是这个 app.use('/wechat', wechat(config, function (req, res, next) {})。这个是接收内容的一种方式,文档和源文件写得非常清楚,大赞。最开始我以为微信服务器会自动跑到/wechat这个路由里面,结果我想多了,一直在给我的公众号发消息,然而我一直得到的是“该公众号暂时无法提供服务,请稍后再试”,我就纳闷了,是哪里有问题吗,反复检查反复检查,我也把配置修改了重新提交,发现Token居然验证失败了,我就好奇了,到底是什么原因导致的,百思不得其解啊,期间我又改了我的Nginx配置,搞得端口映射也失败了,感觉什么都被我搞炸了,有种想删库跑路的感觉...

后来我才恍然大悟,这个/wechat路由是需要你在URL里面添加到后面的,我也是差点被自己蠢哭了,添加上之后Token就能验证成功,一切问题都解决了。

注:路由并不是必须是/wechat,也可以是/a,/b,/wx,/sb...等等看你心情就好。

差不多就这些吧,后续发现问题再进行总结和记录,就酱!

posted on 2017-03-24 00:53  薛将军  阅读(498)  评论(0编辑  收藏  举报

导航