本文作者:DurkBlue

微信公众号号开发小记(六)使用开源框架进行开发

微信公众号号开发小记(六)使用开源框架进行开发摘要: 到了现在,必须要正视一个问题了,之前所作的都是不推荐的,为什么,因为你没发现之前咱们还在调用官方API接口吗?还在写程序去获取token机械json数据呢?而且json数据咱们还要...

到了现在,必须要正视一个问题了,之前所作的都是不推荐的,为什么,因为你没发现之前咱们还在调用官方API接口吗?还在写程序去获取token机械json数据呢?而且json数据咱们还要自己拼接,这可是不行的,要知道在实际的开发中,是奔着以最快时间达成目标为主要的,所以,怎么办?


使用开源框架啊,现如今,做微信公众号开发这块也是比较成熟的,也有一些比较好的开源框架,可以说,使用了开源框架之后,很多事情基本上一行代码搞定。


我这里使用的开源框架是—Wx-tools


GitHub地址:https://github.com/antgan/wx-tools


技术文档地址:https://www.w3cschool.cn/wxtools/


这个开源库给的文档还是相当详细的,可以看一下文档目录




所以基本上看着文档就能实现大多数功能,这里真的要感谢这位开源作者了,偷偷告诉你,这位开源作者跟我一样年龄,唉,惭愧啊,不过人家工作早,赞!自己要加油了!


这里简单说一下用法,首先导入项目依赖


1<!--wx-tools-->

2    <dependency>

3      <groupId>com.soecode.wx-tools</groupId>

4      <artifactId>wx-tools</artifactId>

5      <version>2.1.4-RELEASE</version>

6    </dependency>


这里还要依赖一些其他的包,这里一并给出


1 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->

2    <dependency>

3      <groupId>org.slf4j</groupId>

4      <artifactId>slf4j-api</artifactId>

5      <version>1.7.25</version>

6    </dependency>

7    <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->

8    <dependency>

9      <groupId>ch.qos.logback</groupId>

10      <artifactId>logback-classic</artifactId>

11      <version>1.2.3</version>

12      <scope>test</scope>

13    </dependency>

14    <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->

15    <dependency>

16      <groupId>org.apache.httpcomponents</groupId>

17      <artifactId>httpclient</artifactId>

18      <version>4.5.3</version>

19    </dependency>

20    <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime -->

21    <dependency>

22      <groupId>org.apache.httpcomponents</groupId>

23      <artifactId>httpmime</artifactId>

24      <version>4.5.3</version>

25    </dependency>

26    <!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->

27    <dependency>

28      <groupId>org.codehaus.jackson</groupId>

29      <artifactId>jackson-mapper-asl</artifactId>

30      <version>1.9.13</version>

31    </dependency>

32    <!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream -->

33    <dependency>

34      <groupId>com.thoughtworks.xstream</groupId>

35      <artifactId>xstream</artifactId>

36      <version>1.4.10</version>

37    </dependency>

38    <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->

39    <dependency>

40      <groupId>commons-io</groupId>

41      <artifactId>commons-io</artifactId>

42      <version>2.4</version>

43    </dependency>

44    <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->

45    <dependency>

46      <groupId>org.apache.commons</groupId>

47      <artifactId>commons-lang3</artifactId>

48     <version>3.7</version>

49    </dependency>


导入以上maven依赖之后就可以开心使用这个开源框架了。


服务器验证

首先从最开始的服务器验证这块,对于wx-tools这个框架,总的接口就是IService,而我们要使用的则是它的实现类WxService,很多功能都是通过它调用的,比如我们进行服务器签名验证




这里使用开源框架来替换我们之前写的工具类,记得这里多了一个参数,看,现在使用开源框架我们一行代码就可以搞定服务器验证,而不使用框架的话我们就得自己实现验证的工具类了。


解决token调取上限问题

其实在之前的操作中一直隐藏着一个很大的问题,那就是AccessToken的问题,因为调用任何接口基本上都要用到AccessToken,但是每调用一次产生的AccessToken两小时后自动失效,就要重新调用,也许你会说,两个小时足够了啊,可是我们进行本地调试的时候,免不了重启服务器,这样AccessToken就会被刷新,所以很可能会出现一个AccessToken调取达到上限的问题,因为AccessToken的调用每天是有限制的,所以,这里对AccessToken采用硬编码。


也就是将调取得到的AccessToken进行硬编码,等到两个小时之后再次获取,使用框架获取AccessToken是这样的


1 String accessToken = iService.getAccessToken();


所以我这里新建一个MyWxService去继承WxService


1/**

2* 继承自WxService以便修改响应方法

3 * 比如对token的存储

4 */

5public class MyWxService extends WxService {

6    @Override

7    public String getAccessToken() throws WxErrorException {

8        /**

9         * token每天调取上限位2000次

10         * 为避免达到上限

11         * 将获得的token以硬编码方式存储

12         * 一个token的使用时长有两个小时左右

13         */

14        //开发测试采用,两小时过后需要调用上线采用的方法刷新获取新的token

15        return "12_2sztWZDG-06oyyQ5ObBFwW1TiN3LibX7nJ1FCoxLfVpj0TOdu0YLfwQHpCvZTIgi0mavu0B9D0wPQ3DA98e2lTGTB0gQLWHftgVLk1WnKcHCeSgDluza-tUzYKxxZqWDLImTwcjg1bnuy9yqCYAbACAUQS";

16

17        //正常上线采用

18//        return super.getAccessToken();

19    }

20 }


需要获取AccessToken的话就是用新创建的MyWxService调用,也就是这样


1 IService iService = new MyWxService();

2 String accessToken = iService.getAccessToken();


如此一来就可以解决AccessToken调取上限问题。使用了框架之后对于公众号的具体业务开发,比如接收消息,响应消息或者用户管理等都变得非常简单了,剩下的就是看你的具体需求了。


根据你的需求,查看wx-tools的技术文档,实现具体的业务逻辑,就是你接下来要做的事了,本来想再举几个wx-tools的使用例子,可是人家的文档上已经写的很详细,所以就没必要再写了。


所以嘞,仔细看文档,仔细看文档,仔细看文档!!!


此篇文章由DurkBlue发布,撰文不易,转载请注明来处
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 2019-12-02
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论取消回复

快捷回复:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog

评论列表 (暂无评论,1852人围观)参与讨论

还没有评论,来说两句吧...