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参数错误的情况. 此时除了检查自己代码正确性外,还要检查一下是否正确地设置了公众号后台的 ...
随机推荐
- JAVA的向上转型和向下转型怎么理解呢?
在定义中是子类向父类转型称为向上转型,父类向子类转型是向下转型(必须先向上转型过,才能向下转型), 但是在下面类定义后,我得到的结果却不同.求大佬解惑 class superclass{ public ...
- wkwebview加载本地html的要点
项目中有些页面,我采用了html页面开发,然后用wkwebview加载的设计.在加载过程中遇见了一些问题,在这里进行一些记载和讨论.如有不同意见欢迎进行评论沟通. 问题时候这样的: 在webview的 ...
- 服务器获取浏览器发送请求中的cookies,选取自己需要的cookie
String cookieName = “userID”; // 设置自己需要的cookie名 Cookie cookies[] = request.getCookies(); // 获取请求中的所有 ...
- CSS架构的优选和解决方案
背景 上周我厂前端小伙伴们开了一个技术交流会,关于如何优选CSS架构.解决掉平时写CSS时频繁出现的各种问题,这是前端人员老生常谈的问题,但却很少搬上台面,铺开正式地开交流会.这次会议,便是围绕CSS ...
- UWP 保存Image的图片到本地文件
上一篇说显示一张图片到Image控件,比较简单. 那个假设我Image控件有图片了,想保存到本地,这个就要花心思了,不过也不复杂的... var rtb = new RenderTargetBitma ...
- Java开发小技巧(三):Maven多工程依赖项目
前言 本篇文章基于Java开发小技巧(二):自定义Maven依赖中创建的父工程project-monitor实现,运用我们自定义的依赖包进行多工程依赖项目的开发. 下面以多可执行Jar包项目的开发为例 ...
- Java IO(3)非阻塞式输入输出(NIO)
在上篇<Java IO(2)阻塞式输入输出(BIO)>的末尾谈到了什么是阻塞式输入输出,通过Socket编程对其有了大致了解.现在再重新回顾梳理一下,对于只有一个“客户端”和一个“服务器端 ...
- 深入理解Java内存模型——volatile
volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会非常特别. 理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁 ...
- jQuery使用serialize(),serializeArray()方法取得表单数据+字符串和对象类型两种表单提交的方法
原始form表单值获取方式(手动): $.ajax({ type: "POST", url: "ajax.php", data: "Name=摘取天上 ...
- 深入理解计算机系统_3e 第五章家庭作业 CS:APP3e chapter 5 homework
5.13 A. B. 由浮点数加法的延迟,CPE的下界应该是3. C. 由整数加法的延迟,CPE的下界应该是1. D. 由A中的数据流图,虽然浮点数乘法需要5个周期,但是它没有"数据依赖&q ...