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...等等看你心情就好。
差不多就这些吧,后续发现问题再进行总结和记录,就酱!
NodeJS之微信开发的更多相关文章
- nodejs javascript微信开发
1.当从第三方软件需要分享到微信的时候 需要给授权处理才能获得微信信息 比如 nickname 等昵称图像等 从第三方登陆跳转到微信分享页需要 shareurl = http://open.weixi ...
- Nodejs微信开发使用wechat-api回复多条消息
在上一往篇文章<Nodejs微信开发>中,微信后台能够正常的接收到客户端的消息,并能够简单的回复一条消息至客户端. 但我的目录是将微信与Bot Framework进行关联,那么肯定就有一些 ...
- 基于fastweixin的微信开发环境搭建(一)
由于公司业务需要,开发微信版本,才开始接触微信公众平台.在github折腾了几天,试过好几个微信sdk,最终选择fastweixin.个人觉得这个框架还是值得使用的,使用也简单.那么问题来了,很多人想 ...
- oAuth2授权协议 & 微信授权登陆和绑定 & 多环境共用一个微信开发平台回调设置
OAuth2(open Auth)开放授权协议 授权码模式流程: 1.浏览器(客户端)点击一个比如使用微信登陆按钮 2.会跳到认证服务器页面,让用户选择是否授权 3.如果用户点击授权,那么会跳转到开始 ...
- 3 微信开发本地代理环境的搭建--实现将内网ip映射到外网
微信公众号的开发,要搭建网站,并且随时都有可能修改网站内容进行调试,这就需要临时外网能返回本地开发环境搭建的项目进行测试,即内网映射到公网,但是好多开发者没有自己的域名和服务器,这里我们先来搭建一个本 ...
- CabloyJS带你轻松走进NodeJS全栈开发-免费课程 作者亲授
课程说明 B站直播 为回馈新老同学对开源框架CabloyJS的支持与厚爱,快速而轻松的开启NodeJS全栈开发之旅.2019年9月5日至9月11日在B站开启了一波免费直播培训课程 课程信息,请点击链接 ...
- 一文读懂NodeJS全栈开发利器:CabloyJS(万字长文)
目录 0 修订 0.1 修订说明 0.2 修订历史 1 基本概念 1.1 CabloyJS是什么 1.2 CabloyJS核心解决什么问题 1.3 CabloyJS的开发历程 2 数据版本与开发流程 ...
- NodeJS全栈开发利器:CabloyJS究竟是什么
CabloyJS CabloyJS是一款顶级NodeJS全栈业务开发框架, 基于KoaJS + EggJS + VueJS + Framework7 文档 官网 && 文档 演示 PC ...
- 【微信开发】公众号后台设置错误导致的微信redirect_uri参数错误【图】
在微信开发中,如微信网页授权登录,分享到朋友圈自定义内容,微信h5支付时 可能会遇到微信redirect_uri参数错误的情况. 此时除了检查自己代码正确性外,还要检查一下是否正确地设置了公众号后台的 ...
随机推荐
- TCP/IP协议栈 --- IP路由
IP路由:当一个IP包在主机发送出去或者在网络当中时,是怎么选择路径到达目的主机的呢? 一般情况下, 如果说源主机和目的主机在同一个网络中的话,那个数据报可以直接到达目的主机而不经过路由器,下面可以试 ...
- 【MySQL疑难杂症】如何将树形结构存储在数据库中(方案一、Adjacency List)
今天来看看一个比较头疼的问题,如何在数据库中存储树形结构呢? 像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数据,但是遇到像树形结构这样有深度的人,就很难驾驭了. 举个栗子:现在有一 ...
- createElement的应用
原生js表单生成列表实现原理 这里用到的一些方法有 insertBefore() createElement() appendChild() removeChild() and so on~~ < ...
- Akka(41): Http:DBTable-rows streaming - 数据库表行交换
在前面一篇讨论里我们介绍了通过http进行文件的交换.因为文件内容是以一堆bytes来表示的,而http消息的数据部分也是byte类型的,所以我们可以直接用Source[ByteString,_]来读 ...
- java多线程编程核心技术——第二章
第一节synchronized同步方法目录 1.1方法内的变量为线程安全的 1.2实例变量非线程安全 1.3多个对象多个锁 1.4synchronized方法与锁对象 1.5脏读 1.6synchro ...
- 高效管理http连接
1.Http连接基础 Http协议承载了互联网上的主要流量,然而说到传输,还要回归到最基本的网络分层模型TCP/IP.TCP/IP是全球计算机及网络设备都在使用的一种常用的分组交互网络分层协议集.客户 ...
- Java开发小技巧(二):自定义Maven依赖
前言 我们在项目开发中经常会将一些通用的类.方法等内容进行打包,打造成我们自己的开发工具包,作为各个项目的依赖来使用. 一般的做法是将项目导出成Jar包,然后在其它项目中将其导入,看起来很轻松,但是存 ...
- Microsoft Visual Studio | VS打开解决方案时加载失败,或者出现错误提示
Microsoft Visual Studio | VS打开解决方案时加载失败,或者出现错误提示 1.加载失败并且输出状态栏也没什么错误提示的话,往往是因为一个低版本VS2010.VS2012等打开了 ...
- Cocos2d-X 精灵、动作效果
命名空间宏: USING_NS_CC; 感觉事实上挺鸡肋的. NS_CC_BEGIN. == using namespace cocos2d{ NS_CC_END ; } 推断一个精灵被点击: 1.层 ...
- 介绍一个法国的时间戳server
特别说明: 以下介绍的法国时间戳server已经停止服务了.我曾发Email给相关站点的管理员.对方回复说他也不知道什么时候能恢复服务,有可能就是遥遥无期了.所以以下的内容仅有參考价值.没法实践了. ...