...

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

一直在说要买云服务器,前几天终于买了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...等等看你心情就好。

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

NodeJS之微信开发的更多相关文章

  1. nodejs javascript微信开发

    1.当从第三方软件需要分享到微信的时候 需要给授权处理才能获得微信信息 比如 nickname 等昵称图像等 从第三方登陆跳转到微信分享页需要 shareurl = http://open.weixi ...

  2. Nodejs微信开发使用wechat-api回复多条消息

    在上一往篇文章<Nodejs微信开发>中,微信后台能够正常的接收到客户端的消息,并能够简单的回复一条消息至客户端. 但我的目录是将微信与Bot Framework进行关联,那么肯定就有一些 ...

  3. 基于fastweixin的微信开发环境搭建(一)

    由于公司业务需要,开发微信版本,才开始接触微信公众平台.在github折腾了几天,试过好几个微信sdk,最终选择fastweixin.个人觉得这个框架还是值得使用的,使用也简单.那么问题来了,很多人想 ...

  4. oAuth2授权协议 & 微信授权登陆和绑定 & 多环境共用一个微信开发平台回调设置

    OAuth2(open Auth)开放授权协议 授权码模式流程: 1.浏览器(客户端)点击一个比如使用微信登陆按钮 2.会跳到认证服务器页面,让用户选择是否授权 3.如果用户点击授权,那么会跳转到开始 ...

  5. 3 微信开发本地代理环境的搭建--实现将内网ip映射到外网

    微信公众号的开发,要搭建网站,并且随时都有可能修改网站内容进行调试,这就需要临时外网能返回本地开发环境搭建的项目进行测试,即内网映射到公网,但是好多开发者没有自己的域名和服务器,这里我们先来搭建一个本 ...

  6. CabloyJS带你轻松走进NodeJS全栈开发-免费课程 作者亲授

    课程说明 B站直播 为回馈新老同学对开源框架CabloyJS的支持与厚爱,快速而轻松的开启NodeJS全栈开发之旅.2019年9月5日至9月11日在B站开启了一波免费直播培训课程 课程信息,请点击链接 ...

  7. 一文读懂NodeJS全栈开发利器:CabloyJS(万字长文)

    目录 0 修订 0.1 修订说明 0.2 修订历史 1 基本概念 1.1 CabloyJS是什么 1.2 CabloyJS核心解决什么问题 1.3 CabloyJS的开发历程 2 数据版本与开发流程 ...

  8. NodeJS全栈开发利器:CabloyJS究竟是什么

    CabloyJS CabloyJS是一款顶级NodeJS全栈业务开发框架, 基于KoaJS + EggJS + VueJS + Framework7 文档 官网 && 文档 演示 PC ...

  9. 【微信开发】公众号后台设置错误导致的微信redirect_uri参数错误【图】

    在微信开发中,如微信网页授权登录,分享到朋友圈自定义内容,微信h5支付时 可能会遇到微信redirect_uri参数错误的情况. 此时除了检查自己代码正确性外,还要检查一下是否正确地设置了公众号后台的 ...

随机推荐

  1. IK-Analyzer(5.3.1)动态配置自定义词典

    参考文献:http://blog.csdn.net/fatpanda/article/details/37911079 jar包: IK-Analyzer-extra-5.3.1.jar IKAnal ...

  2. 用python的requests第三方模块抓取王者荣耀所有英雄的皮肤

    本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸 下面时具体的代码,已通过python3.6测试,可以成功运行: ...

  3. day3、Linux快捷键及vim命令快捷键

    Linux命令行快捷键 快捷键: tab键  自动补全路径 目录  名字,  自动不全命令 快捷键: ctrl +l(小写) 清屏 . ctrl +c 取消当前操作 快捷键: ctrl +d(小写) ...

  4. NFS介绍和安装

    NFS简单介绍 NFS 是Network File System的缩写,即网络文件系统. 一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外发布.功能是通过网络让不同的机器.不同的操作 ...

  5. WinCE的C#编程,对float型进行四舍五入保留两位小数,小数进行四舍五入操作,Math.Round的应用案例。

    private  float ConvertFloat4Se5Ru(float flotValue) {              int iValue = (int)Math.Round(flotV ...

  6. Proactor 学习1

    Proactor    An Object Behavioral Pattern for Demultiplexingand Dispatching Handlers for Asynchronous ...

  7. spool命令、创建一个表,创建而且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站

      1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建 ...

  8. Winform开发框架中工作流模块的业务表单开发

    在我们开发工作流的时候,往往需要设计到具体业务表单信息的编辑,有些是采用动态编辑的,有些则是在开发过程中处理的,各有各的优点,动态编辑的则方便维护各种各样的表单,但是数据的绑定及处理则比较麻烦,而自定 ...

  9. 深入理解计算机系统_3e 第六章家庭作业 CS:APP3e chapter 6 homework

    6.22 假设磁道沿半径均匀分布,即总磁道数和(1-x)r成正比,设磁道数为(1-x)rk: 由题单个磁道的位数和周长成正比,即和半径xr成正比,设单个磁道的位数为xrz: 其中r.k.z均为常数. ...

  10. ios应用版本号设置规则

    版本号的格式:v<主版本号>.<副版本号>.<发布号> 版本号的初始值:v1.0.0 管理规则: 主版本号(Major version) 1.  产品的主体构件进行 ...