java微信公众号开发(搭建本地测试环境)

作者:风的姿态 时间:2021-07-07 05:32:40 

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

测试公众号

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

java微信公众号开发(搭建本地测试环境)

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

java微信公众号开发(搭建本地测试环境)

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

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

本地测试环境

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

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

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

ngrok -authtoken 授权码 80

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

ngrok http 8080

启动后的界面如下:

java微信公众号开发(搭建本地测试环境)

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

java微信公众号开发(搭建本地测试环境)

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

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

标签:java,微信开发
0
投稿

猜你喜欢

  • Java中Class类的作用与深入理解

    2021-12-03 16:21:58
  • C#通过NPOI导入导出数据EXCEL

    2023-01-27 14:24:08
  • 基于springboot 配置文件context-path的坑

    2021-07-04 17:37:27
  • java内存模型jvm虚拟机简要分析

    2022-09-08 09:29:34
  • Java线程状态变换过程代码解析

    2023-08-06 18:05:29
  • mybatis-plus 拦截器敏感字段加解密的实现

    2023-12-20 05:58:17
  • 带你了解如何使用Spring基于ProxyFactoryBean创建AOP代理

    2022-04-28 09:17:37
  • 详解如何在Spring Security中自定义权限表达式

    2023-11-08 05:11:24
  • Android实现闪光灯效果

    2023-08-02 12:20:06
  • Java使用sftp定时下载文件的示例代码

    2022-11-14 06:11:47
  • 解析Java实现随机验证码功能的方法详解

    2022-09-25 23:26:14
  • Android自定义view Path 的高级用法之搜索按钮动画

    2023-12-23 06:53:28
  • C#中除去所有在HTML元素中标记

    2023-04-14 04:09:56
  • Java获得当前时间前指定几个小时具体时间的方法示例

    2023-11-24 04:56:49
  • java线程之join方法的使用介绍

    2023-01-15 12:18:40
  • Flutter Android应用启动白屏的解决方案

    2022-10-02 04:08:04
  • Android 实现会旋转的饼状统计图实例代码

    2022-04-08 09:38:50
  • springboot+jersey+tomcat实现跨域方式上传文件到服务器的方式

    2023-08-16 10:26:45
  • Java实现堆排序(大根堆)的示例代码

    2023-09-13 15:24:01
  • 解决RestTemplate第一次请求响应速度较慢的问题

    2021-10-20 15:50:50
  • asp之家 软件编程 m.aspxhome.com