本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/5023678.html

俗话说,工欲善其事,必先利其器。要做微信公众号开发,两样东西不可少,那就是要有一个用来测试的公众号,还有一个用来调式代码的开发环境。

测试公众号

微信公众号有订阅号、服务号、企业号,在注册的时候看到这样的信息,只有订阅号可以个人申请,服务号和企业号要有企业资质才可以。这里所说的微信公众号开发指的是订阅号和服务号。

另外,未认证的个人订阅号有一些接口是没有权限的,并且目前个人订阅号已不支持微信认证,也就是说个人订阅号无法调用一些高级的权限接口,下图就是一个未认证的个人订阅号所具备权限列表,像生成二维码、网页授权、自定义菜单、微信支付这样的接口权限都是不具备的。

说了半天,那如果没有企业资质,又想做高级接口的开发怎么办呢。

微信公众平台提供了测试公众账号,登录地址为:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,只需要到这个页面,点击登录,并用自己的微信客户端扫码,并授权登录,就可以获得属于自己的测试公众号。测试公众号具备几乎所有的接口,平时开发如果没有可用的公众号,就用这个测试的公众号就可以了。

本地测试环境

开发微信公众账号的一大痛苦之处就是调试问题,每次实现一个功能后都需要部署到一个公网服务器,虽然目前有各种免费云平台可以部署,但是调式基本只能靠日志输出了,而且没次修改->部署->查看日志,这样的操作过程非常浪费时间,时间就是生命,这样难道不是在浪费生命吗。那么,有没有办法可以本地部署,本地调试呢?

当然有,因为每次向公众号发送一条指令,公众号所在的服务器要和你的服务器进行网络交互,所以说你的服务器要保证外网可以访问到,那么只需要将你本地映射到一个外网地址即可实现微信公众号的本地调试。提供这样功能的软件不少,比如花生壳,但是要收费的。这里介绍一个免费的软件,ngrok,访问可能需要翻墙。根据本地所需的版本,windows或者linux版,然后注册账号,账号注册成功后,会得到一个免费授权码,这个授权码在第一次启动ngrok时会用到。

以我本地为例,我下载的是windows版本的,下载并解压后,找到解压目录,双击ngrok.exe,第一次启动时,输入如下命令:

ngrok -authtoken 授权码 80

之后再启动,双击ngrok.exe即可,启动后输入命令将本机映射到外网,将本地8080端口下的web服务映射到外网80端口,命令如下:

ngrok http 8080

启动后的界面如下:

  

红色部分即为映射的外网地址,现在访问这个地址就是访问本地的8080端口。但是免费版的ngrok,生成的外网映射地址是随机的,每次重新启动都会不一样,但其实并无大碍,因为每天ngrok启动一次中途基本不会关闭,每次启动之后,到微信测试公众号管理页面,重新配置一下即可。

截止到目前为止ngrok是可用的,也就是说ngrok服务器虽然被墙了,但是微信公众号服务器是可以访问的,这样一来也就不妨碍我们做本地调式了。只是下载注册ngrok需要翻墙一下。

国内也有一些ngrok服务器,但是没有试过,如果有兴趣可以自行搜索一下。当然如果有能力,可以自己搭建一个ngrok平台,ngrok是go语言实现的,代码已开源到github

欢迎关注公众号「gushidefengzheng」古时的风筝

还可以加入 Java 微信讨论群(如果二维码过期:请加微信:fengdezitai001 ,备注:cnblogs):

用java开发微信公众号:测试公众号与本地测试环境搭建(一)的更多相关文章

  1. Java开发微信公众号(四)---微信服务器post消息体的接收及消息的处理

    在前几节文章中我们讲述了微信公众号环境的搭建.如何接入微信公众平台.以及微信服务器请求消息,响应消息,事件消息以及工具处理类的封装:接下来我们重点说一下-微信服务器post消息体的接收及消息的处理,这 ...

  2. Java开发微信公众号(二)---开启开发者模式,接入微信公众平台开发

    接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 资料准备: 1.一个可以访问的外网,即80的访问端口,因为微信公众号接 ...

  3. Java开发微信公众号(一)---初识微信公众号以及环境搭建

    ps:1.开发语言使用Java springMvc+Mybaits+spring maven实现 2.使用微信接口测试账号进行本地测试 https://mp.weixin.qq.com/debug/c ...

  4. Java开发微信公众号(五)---微信开发中如何获取access_token以及缓存access_token

    获取access_token是微信api最重要的一个部分,因为调用其他api很多都需要用到access_token.比如自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等在请求的时候 ...

  5. Java开发微信公众号(三)---微信服务器请求消息,响应消息,事件消息以及工具处理类的封装

    在前面几篇文章我们讲了微信公众号环境的配置 和微信公众号服务的接入,接下来我们来说一下微信服务器请求消息,响应消息以及事件消息的相关内容,首先我们来分析一下消息类型和返回xml格式及实体类的封装. ( ...

  6. 用c#开发微信(1)服务号的服务器配置和企业号的回调模式 - url接入 (源码下载)

    最近研究了下服务号的服务器配置和企业号的回调模式.真正实现完后,觉得很简单,但一开始还是走了点弯路,所以写了个web程序,只用改下配置文件里的参数就可以直接用了.下面介绍下详细的用法以及实现步骤. 本 ...

  7. Java开发桌面程序学习(一)——JavaFx+Jfoenix初始以及搭建

    Java开发桌面程序学习(一)--JavaFx+Jfoenix初始以及搭建 前言 想做一个Java的桌面程序,但是,使用原生的Swing感觉又十分麻烦,那个布局都是拿代码设置,看着十分的乱,偶然的情况 ...

  8. Java web与web gis学习笔记(一)——Tomcat环境搭建

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  9. 用java开发微信公众号:公众号接入和access_token管理(二)

    本文为原创,原始地址为http://www.cnblogs.com/fengzheng/p/5027630.html 上一篇说了微信开发的准备工作,准备工作完成之后,就要开始步入正题了.其实微信公众号 ...

随机推荐

  1. laravel 框架使用总结 limit

    后台开发就是数据的各种处理很多时候需要做到分页,但是在laravel中使用limit做分页的时候会出现问题,偏移量和每页的条数放进去好像不好使了 下面推荐给大家一种在laravel框架中非常好用的写法 ...

  2. 16-1-27---JDBC复习(01)

    JDBC数据库连接学习    用jdbc连接数据库    1.加载驱动        Class.forName("");        用注册的方式会使内存中存在两个对象,而用上 ...

  3. PyCharm 代码完成/代码提示

    因为python是动态语言,所以在有些情况ide会无法有效代码提示,见下: import sqlite3 conn = sqlite3.connect('d:/xxx.db') conn.  #这里按 ...

  4. placeholder js简单实现

    window.onload = function() { var input = document.getElementById("input"); input.onblur = ...

  5. UDP和TCP的区别

    UDP(User Datagram Protocol 用户数据报协议) TCP(Transmission Control Protocol 传输控制协议) UDP是一种非面向连接的传输协议,它的实现是 ...

  6. 关于PHP语言

    ------php语言与JavaScript的使用 方法是相似 <script type="text/javascript"> </script>--js与 ...

  7. iOS 中 ARC 项目 兼容 MRC

    iOS 项目中MRC 和 ARC 项目的代码兼容问题: 1.ARC 项目中导入 MRC 第三方类的时候要在此类上添加 -objc-arc. 2.MRC 项目中导入 ARC 类的时候要在次类上添加 -f ...

  8. HTML/CS3相关面试题目

    一.HTML/CS3基本面试题目. 1. 常用那几种浏览器测试? 1.1浏览器:IE,Chrome(谷歌),FireFox(火狐),Safari(苹果计算机的最新操作系统Mac OS X中的浏览器,使 ...

  9. [转]android:动态创建多个按钮 及 批量设置监听

    之前投机取巧,先创建好多个按钮,再根据需要的数量进行部分隐藏,不过还是逃不过呀. 这样根本无法批量地 findId,批量地 设置监听. 所以今天还是认认真真地研究回“动态创建按钮”,终于,通过不断尝试 ...

  10. 解决:View调用invalidate()后不刷新onDraw()

    近来学android图片处理,按照例子来,自定义一个View,之后在Activity里面手动调用该View的invalidate()后,一直无法刷新onDraw() 上网搜了一下,有两种解决办法: 一 ...