在申请token时并不是每发送一次消息就要申请一次token,因为token是有次数限制的,规则就是下面

主动调用的频率限制

当你获取到AccessToken时,你的应用就可以成功调用企业号后台所提供的各种接口以管理或访问企业号后台的资源或给企业号成员发消息。

为了防止企业应用的程序错误而引发企业号服务器负载异常,默认情况下,每个企业号调用接口都有一定的频率限制,当超过此限制时,调用对应接口会收到相应错误码。

以下是当前默认的频率限制,企业号后台可能会根据运营情况调整此阈值:

  • 基础频率

每企业调用单个cgi/api不可超过1000次/分,30000次/小时

每ip调用单个cgi/api不可超过2000次/分,60000次/小时

第三方应用提供商由于需要同时服务于多个企业,ip频率限制如下:每ip调用单个cgi/api不可超过20000次/分,600000次/小时

  • 发消息频率

每企业不可超过帐号上限数*30人次/天

  • 创建帐号频率

每企业创建帐号数不可超过帐号上限数*3/月

  • 创建应用频率

每企业最大应用数限制为30个,创建应用次数不可超过30*3/月

---------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------

那么我们处理token的时候,就可以使用static进行处理,定义两个变量

<pre name="code" class="java">   //主动调用:发送消息获得tokenpublic static String access_token;//主动调用:请求token的时间public static Date access_token_date;

在每次请求token的时候:

1、判断jsapi_ticket是否存在,不存在的话直接申请;

2、判断时间是否过期,过期(>=7000秒)则重新申请token,否则不用请求直接返回之前的token。

这样可以避免请求token频繁导致的系统不能使用的问题

 /*** 从微信获得access_token* @return*/public  String getTokenFromWx(){//微信企业号标识String corpid=RESP_MESSAGE_CORPID;//管理组凭证密钥String corpsecret=RESP_MESSAGE_SECRET;//获取的标识String token="";//1、判断access_token是否存在,不存在的话直接申请//2、判断时间是否过期,过期(>=7200秒)申请,否则不用请求直接返回以后的tokenif(null==access_token||"".equals(access_token)||(new Date().getTime()-access_token_date.getTime())>=(7000*1000)){CloseableHttpClient httpclient = HttpClients.createDefault();try {//利用get形式获得tokenHttpGet httpget = new HttpGet("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+corpid+"&corpsecret="+corpsecret);// Create a custom response handlerResponseHandler<JSONObject> responseHandler = new ResponseHandler<JSONObject>() {public JSONObject handleResponse(final HttpResponse response) throws ClientProtocolException, IOException {int status = response.getStatusLine().getStatusCode();if (status >= 200 && status < 300) {HttpEntity entity = response.getEntity();if(null!=entity){String result= EntityUtils.toString(entity);//根据字符串生成JSON对象JSONObject resultObj = JSONObject.fromObject(result);return resultObj;}else{return null;}} else {throw new ClientProtocolException("Unexpected response status: " + status);}}};//返回的json对象JSONObject responseBody = httpclient.execute(httpget, responseHandler);if(null!=responseBody){token= (String) responseBody.get("access_token");//返回token}httpclient.close();//设置全局变量access_token=token;access_token_date=new Date();}catch (Exception e) {e.printStackTrace();} }else{token=access_token;}return token;}

微信企业号开发二:TOKEN缓存处理相关推荐

  1. 微信企业号开发[二]——获取用户信息

    注:文中绿色部分为摘自微信官方文档 在<微信企业号开发[一]--创建应用>介绍了如何创建应用,但是当用户点击应用跳转到我们设定的URL时,其实并没有带上用户的任何信息,为了获取用户信息,我 ...

  2. python企业微信回调_Python+Flask 微信企业号开发二之开启回调模式

    一.  概述 上文主要是关于微信主动发送消息给用户, 这篇文章主要是用来描述如何开启微信企业号的回调模式 二 . 操作 1. 登陆微信企业号应用中心--我的应用--模式选择--回调模式 2. 代码 # ...

  3. 微信企业号开发:微信考勤百度地图定位,错误修正二

    在之前的博客中微信企业号开发:微信考勤百度地图定位,错误修正介绍了一种修正百度地图错误的方法,就是使用高德地图修正.但经过近一年.近两千人的使用发现,在百度地图出现定位错误时,通过HTML5获取的经纬 ...

  4. 微信企业号开发之 企业号人员身份认证与开发

    前言 这里完全可以链接一个登录页面,让用户输入用户名密码进行登录的...2333 但是,这样所就完全失去了微信企业号的意义,本来进入微信企业号的时候,就已经对人员身份进行认证了,你这里再让别人登录,不 ...

  5. 新书《微信企业号开发揭秘》已出版,全书采用WeChatEnterprise框架开发

            新书<微信企业号开发揭秘>已出版,全书基于源码与API逐步讲解,采用WeChatEnterprise框架开发 纸质书购买地址:  天猫    京东    当当    亚马逊 ...

  6. 微信企业号开发:启用回调模式

    微信企业号开发怎样启用回调模式?就是简单的登陆PC版微信,点击应用中心,选择须要应用,再点击回调模式启用? 似乎不是这么简单.! 能够看到核心的仅仅有三个URL.Token,EncodingAESKe ...

  7. Jeewx-Enterprise_1.1版本发布,开源微信企业号开发平台

    JEEWX企业号简介 JEEWX微信企业号开发平台是一款开源.免费.高效.敏捷的微信企业号开发平台,采用JAVA语言基于Jeecg快速开发框架实现,实现了微信企业号管理平台的基础功能,便于用户二次开发 ...

  8. 微信企业号开发(2)--建立连接(主动)

    [本文所描述的内容具有一定的时效性,请以实际开发所处环境为准] 在微信企业号开发(1)--基础入门中,我们已经学习了,我们的程序结构应该如何设计.接下来,我们会按照微信企业号开发者接口文档的顺序,逐一 ...

  9. 微信企业号开发01 - 获取corpid 和 corpsecret

    刚开始接触微信企业号开发的小伙伴难免会遇到一个问题,就是我们从哪里去找企业号的corpid和corpsecret,其实很简单,corpid可以从企业号主页->设置->基本信息 中可以看到, ...

最新文章

  1. 解决:AttributeError: ‘Graph‘ object has no attribute ‘number_of_selfloops‘
  2. 清华大学梁宸计算机系,应用数学专业论文
  3. tomcat、腾讯云主机和微信
  4. VTK:Points之RadiusOutlierRemoval
  5. chrome下input[type=text]的placeholder不垂直居中的问题解决
  6. [剑指offer]面试题22:栈的压入、弹出序列
  7. 使用PLupload在同一页面中进行多个不同类型上传解决方案和一次多文件上传的注意事项...
  8. 驱动对象-设备对象-设备栈
  9. python 3 json 序列化
  10. 消息队列 (1) mac安装RabbitMQ
  11. 文字图片滚动 jquery 实现代码
  12. 劝君莫惜金缕衣 劝君惜取少年时 2015年 ,我22岁。
  13. java计算机毕业设计智友少儿编程学习平台源码+mysql数据库+系统+部署+lw文档
  14. 张雨潇 计算机科学,三亚考生本科第二批录取名单[一]
  15. 【VMCloud云平台】SCAP(四)租户(一)
  16. 百分点认知智能实验室出品:情感分析在舆情中的研发实践(上)
  17. 机遇与挑战并存,优信二手车强势发力
  18. linux inet_init
  19. 融云发布2018年互联网通信云数据报告:寒冬下孕育新的产业希望
  20. dpo指标详解买入绝技_DPO指标详解:DPO结合MADPO混合使用图解

热门文章

  1. sql语句查询昨天,今天,最近七天,最近三十天数据
  2. 用Tushare实现上证综指日对数收益率的计算
  3. 人脸识别主要算法原理和公司
  4. vue 中报错 [Element Migrating][ElDialog][Attribute]: size is removed.
  5. 计算机组成原理复杂机实验总结,计算机组成原理复杂模型机设计_课程设计报告.doc...
  6. EXCEL宏编程纪念
  7. Ubuntu 20.04 系统最快安装WRF软件手册
  8. latex 封面右上角出现数字
  9. bnu1209 1--0的神奇游戏 C语言版
  10. [Java] 查看占用 CPU 最高的线程