NodeJs 开发微信公众号(二)测试环境部署
由于卤煮本人是做前端开发的,所以在做公众号过程中基本上没有遇到前端问题,在这方面花的时间是最少的。加上用了mui框架(纯css界面)和自己积累的代码,很快地开发出了界面来。接着是后台开发。卤煮选的是nodejs,作为中小型的项目开发,nodejs是前端开发人员的首选。然后是选了一些开发包,帮助快速上手。express,inspector,mysql等。卤煮不打算做nodejs教程,网上有很多。假设这些你都已经做好了,也就是说首先,你保证你已经有一份写好了的程序,并且通过本地浏览器测试。然后再开始搭建测试环境。
搭建本地服务器
很多同学在处于开发阶段的时候是不愿意搭建服务器环境的,一个是对linux系统不太熟悉,各种命令啦,方法啦,远程啦弄得人一头雾水,对于前端工程师来说尤其如此。况且,服务器需要花钱购买,虽然要不了几个钱,但终究是在产品未出来前持不愿意态度。这里,卤煮推荐一款非常有用的测试工具,它能够把内网公射到外网上去,并且给你一个能被访问到的域名。也就是说,域名是免费的,服务器则是你自己的电脑。它的操作步骤也非常简单,你花一分钟就可以搞定!
首先保证你的80端口被node监听。然后利用内网穿透工具把80端口映射出去。上一章讲过可以用ngrok工具穿透内网,使得你的本地ip作为外网使用。打开http://natapp.cn,下载window(根据你自己的系统)版本的工具,解压后打开cmd,切换到解压目录下输入以下命令:
ngrok -config ngrok.cfg -subdomain yourdomain 80
yourdomain是你自定义的域名,后面是端口,接着敲回车键,可以看到如下画面
这时候,工具就把你的80端口映射出去了,而且还为你生成了一个域名,这个域名是可以被外网访问的。这样你的机器目前就是一台小服务器了。由于是内网穿透,http会走好几层路由,导致访问的速度会比较慢,但对于我们这些一毛钱没花就搭建好了服务器的同学来说,应该能刚到满足了吧。有了这个域名和服务器,我们就可以轻轻松松得来布置微信的测试环境了。
申请微信测试号
卤煮之前说过,微信公众号认证是需要公司资质的,而且认证费用要三百大洋。也就是说完成一个公众号的认证你大概需要注册公司成本(800)+ 认证成本(300),一共一千一的费用。卤煮本着在正式项目出来之前是不花一毛钱的原则,网上找到了微信的测试公众号平台。实现了不花钱用微信的认证功能的目的。打开微信测试公众号开发平台(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login),点击登录,用自己的微信扫描后确认登录,系统为你自动建立一个测试账号。这个测试账号是临时的,最多拥有100位粉丝,但对于开发阶段来说完全足够,而且最有用的部分是该公众号的所有权限都为你开通。有了这个测试号,你就相当于已经拥有了一个认证过的准公众号:
如上图所示,数字的意义分别代表着:1:你的测试微信号, 2:appid, 3:appsecret, 4:与微信交互的后台接口 处理关注,发布,取消等事件, 5:Token 任意值,后台交互的凭证, 6:直接填写你的有效域名,引入js会以此域名为凭据。有一点值得注意,当你填写第四项的时候,点击提交微信会去验证你所填写的后台接口。为了方便第一次认证,你可以在此接口直接返回一段参数,已确认改服务器的所有权在你手上。后续我们会在这个接口里面逐步添加业务。代码如下:
//微信将很多事件推送到此接口上
app.post('/yourapi', function(req, res, next) {
//微信得到返回后会通过你的认证
var query = req.query;
var echostr = query.echostr;
res.send(echostr);
});
接下来我们可以看到测试平台已经全部开放了权限,只需要你调用。里面还有测试公众号的二维码,扫描就可以关注,旁边是关注的粉丝名称以及它们的openid。往下翻页可以看到有“网页账号”这项服务功能,此功能是在用户打开网页时获取授权信息的,点击修改弹出填写域名界面。
在文本框内填写你的域名,这样微信才会给这个域名下的网页授权。记住,不需要www开头,直接写域名,如:baidudu.com。以www开头的是无效的。在开发环境下可以填写外网ip,但是在正式的公众号里面只允许填写域名。那么至此你已经把微信部分测试环境搭建好了,很简单吧。下一篇将讲解微信交互的一些过程。
需要注意的地方
1.填写网页授权时不需要http或者www开头,只需要填写域名即可
2.微信授权域名只支持80端口,务必使node监听80端口
3.每次开机都需要重新搭建本地服务器环境,映射内网。
4.微信URL填写的是后端的接口,如:http://yourname.ngrok.natapp.cn/login/wechat 或者http://yourname.php,这个接口很重要,负责监听微信推送的各种事件。后面会详细讲解。
5.填写URL的时候微信会自动发送请求到该地址去,所以,必须先写好该接口,并且返回你填写的TOKEN,微信才会认为此服务器接口有效。res.send(req.query.echostr);
NodeJs 开发微信公众号(二)测试环境部署的更多相关文章
- NodeJs 开发微信公众号(五)真实环境部署
在测试环境下开发完成代表着你离正式上线的目标不远了.接下来本章就主要谈一谈把测试环境的公众号升级为正式的公众号. 服务器和域名 目前为止我们只是在自己的电脑上完成了测试环境.真实的线上环境当然需要自己 ...
- 用java开发微信公众号:测试公众号与本地测试环境搭建(一)
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/5023678.html 俗话说,工欲善其事,必先利其器.要做微信公众号开发,两样东西不可少,那就是要有一 ...
- NodeJs 开发微信公众号(一)准备工作
前言 大概是一个月前,自己用业余时间做了一个微信公众号.微信开发,尤其是对后台不熟悉的人来说显得尤其困难.首先要克服的是后台语言(nodejs)的一些不熟悉困难,其次,也是最大的一点困难是在跟微信交互 ...
- Nodejs开发微信公众号中控服务
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 本项目旨在为多个微信公众号 ...
- NodeJs 开发微信公众号(四)微信网页授权
微信的网页授权指的是在微信公众号中访问第三方网页时获取用户地理.个人等信息的权限.对于开发了自己的网页app应用时,获取个人的信息非常重要.上篇博客讲到了注册时可以获取用户的信息,很多人会问为什么还需 ...
- NodeJs 开发微信公众号(三)微信事件交互
微信公众号有个规则,一旦开启了开发者模式,其他的常规功能就都必须通过接口调用完成.比如说自定义菜单功能,必须通过发送post请求的方式生成.本章就通过关注到取消关注的整个过程来谈一谈nodejs是怎么 ...
- 使用 nodeJs 开发微信公众号(上传图片)
在给用户发送消息中涉及到的素材(图片.视频.音频.文章等)需要事先传到微信服务器,然后获得媒体id(media_id),然后把 media_id 传递给用户 上传分上传临时素材(只保存三天)和上传永久 ...
- 使用 nodeJs 开发微信公众号(配置服务器)
流程如下: 1. 申请微信公众号:企业号.服务号.订阅号(前两个要钱) 2. 配置微信公众号后台 选择基本配置,获得 AppId 和 AppSecret ,点击服务器配置 URL:你服务器地址,不能是 ...
- 使用 nodeJs 开发微信公众号(获取access_token)
要使用微信提供的功能接口,就需要获取到access_token,这是开发公众号必不可少的一部 access_token有效期20分钟,建议保存起来,过期后在重新获取 获取流程如下: 我将微信相关的操作 ...
随机推荐
- 鱼搜_鱼搜官网_鱼搜搜索_http://www.7yusou.com
收集了N多视频小站,然后花了3天时间弄了一个鱼搜搜索网站.欢迎大家访问哟. http://www.7yusou.com
- IIS上虚拟站点的web.config与主站点的web.config冲突解决方法 分类: ASP.NET 2015-06-15 14:07 60人阅读 评论(0) 收藏
IIS上在主站点下搭建虚拟目录后,子站点中的<system.web>节点与主站点的<system.web>冲突解决方法: 在主站点的<system.web>上一级添 ...
- json相关,浏览器打开json格式的api接口时,进行格式化,chrome插件
在chrome浏览器中安装Google jsonview插件能够自动格式化json格式的数据.
- xml_TO_object
一般对于开发人员拿到的xml文件都是配置文件,所以对于我们来说,最主要要做的事情是将xml的内容封装成对象. 下面展示代码 package javaDom4j; import java.util.Ar ...
- jQuery实战
1.获取标签在文档中的位置 var left = $('.selected').offset().left; var top = $('.selected').offset().top; 2.获取选中 ...
- SqlServer查询表中各列名称、表中列数
查询表名为tb_menu的所有列名 select name from syscolumns where id=object_id('tb_menu') 查询表名为tb_menu的所有列名个数 ...
- CSS中各种各样居中方法的总结
在开发前端页面的时候,元素的居中是一个永远都绕不开的问题.看似简单的居中二字,其实蕴含着许许多多的情况,对应着很多的处理方法,本文就试图对页面布局中的居中问题进行总结~~ 居中问题分为水平居中和竖直居 ...
- .NET CLI 命令
您可以立即使用的部分通用 .NET CLI 命令 命令 说明 dotnet new 使用 C# 语言初始化用于类库或控制台应用程序的有效项目. dotnet restore 还原在指定项目的 proj ...
- IE11 上的3个bug
1.IE 11在popstate上无法正常使用,所以,需要使用老方法hashchange.有一个叫History.js的library,是可以解决这个问题.但如果url在"#"后跟 ...
- 基础3.Jquery操作Dom
1 内部插入节点 <body> <ul id="city"> <li id="bj" name=&qu ...