微信公众平台开发系列之必备知识

一、微信公众号开发需要准备的一些资料以及如何搭建一个测试服务器

微信公众号开发之前,首先要有一个公众号,不同类型的公众号具备不同的接口权限。

可以看到,如果想使用微信的很多高级接口,必须是认证之后才可以。为了开发过程中调试方便,微信为我们提供了测试账号,几乎所有的高级接口都支持,非常方便。

(1)申请一个微信公众平台接口测试帐号:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,扫码登录即可。

(2)在微信开发的时候,必须要输入UR来进行token验证,而该URL必须是外网域名。因此,需要搭建服务器。为了开发调试方便,我们可以在本地搭建服务器,然后将本地服务器的接口地址对外映射。

二、搭建测试服务器

使用免费的映射工具,如下工具可以使用

1)natapp:https://natapp.cn/

2)ngrok:https://www.ngrok.cc/

3)nat123:http://www.nat123.com/

我们使用natapp来演示。

首先,打开natapp官网,下载对应版本的客户端,此处我们以Mac为例。

下载完成后,打开终端,cd到natapp所在目录,修改权限:chmod a+x natapp,之后运行:./natapp。

如果报如下的错:

原因是没有在官网注册,我们在官网注册一个账号,然后登录,登录后需要进行实名认证才能购买隧道。

映射的端口需要重点强调,微信Token验证的域名必须是80端口或443端口,如下图。所以我们此处默认就是80,这样映射的域名才能被微信访问到。

点击免费购买后,会生成authtoken:

接下来就可以正常运行natapp了,终端运行:./natapp -authtoken=你的authtoken,结果如下说明成功映射:

接下来就是在Eclipse中创建web项目,我们以最简单快速的servlet实现微信token验证。由于我们使用的是Mac,映射80端口后,不能直接访问,需要额外做一些转发配置。下一篇文章我们详细讲解步骤。

三、Mac下解决微信公众平台80端口访问问题

MAC OS是一个基于Unix的操作系统, Unix 系统大多默认情况下非root用户是无法使用小于1024的常用端口的。而微信Token验证要求域名端口是80,这时候Eclipse中启动tomcat后,开启http服务, 通过80端口直接访问是不行的,需要做一些系统端口转发的工作。

在终端下执行以下步骤:

1、创建转发配置文件 :

sudo vim /etc/pf.anchors/eclipse.tomcat.forwarding

文件内容 :

rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080
rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 443 -> 127.0.0.1 port 8443

保存并退出。

2、创建pf-tomcat.conf文件 :

sudo vim /etc/pf-tomcat.conf

文件内容 :

rdr-anchor "forwarding"
load anchor "forwarding"from "/etc/pf.anchors/eclipse.tomcat.forwarding"

保存并退出。
3、启动

sudo pfctl -ef /etc/pf-tomcat.conf 

成功启动后,会打印出以下log:

pfctl: Use of -f option, could result in flushing of rules
present in the main ruleset added by the system at startup.
See /etc/pf.conf for further details.
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled 

4、测试
Eclipse创建一个web工程,并配置好启动的server,启动tomcat后,默认的端口是8080,浏览器访问http://127.0.0.1/web工程名,默认是80端口,可以正常访问;8080端口加上,http://127.0.0.1:8080/web工程名, 同样可以访问。

5、关闭

sudo pfctl -d

关闭后,会打印出以下log:

No ALTQ support in kernel
ALTQ related functions disabled
pf disabled

也可以全部关闭

pfctl -F all -f /etc/pf.conf

推荐阅读更多精彩内容