微信企业号开发二:TOKEN缓存处理
来源:互联网 发布:港澳台电视直播软件tv 编辑:程序博客网 时间:2024/06/03 04:09
在申请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形式获得token HttpGet httpget = new HttpGet("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid="+corpid+"&corpsecret="+corpsecret); // Create a custom response handler ResponseHandler<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缓存处理
- 微信开发-Token处理
- 微信企业号获取Token的函数(Access_token缓存版)
- 微信企业号开发一:主动调用模式之TOKEN申请
- 微信接口开发缓存全局token,ticket
- 二、微信企业号开发:corpsecret到底在哪块呢
- 微信企业号开发(二)-回调接口
- 微信公众号开发 Token和凭证Access Token
- 微信公众号开发Access Token
- 微信 Access Token (二)
- 微信企业号开发
- 微信企业号开发:微信考勤百度地图定位二
- 微信企业号开发:微信考勤百度地图定位,错误修正二
- 微信开发 获取Token、主动给企业成员发送消息
- 微信企业号开发相关细节
- 微信企业号开发实例源码
- 微信企业号开发—通讯录
- 微信企业号开发入门
- PHP中该怎样防止SQL注入
- Oracle数据库常用查询集锦
- ios UIWebView用NSURLSessionDataTask获取请求返回的状态码
- 求帮助
- OC_06_01 NSDictionary
- 微信企业号开发二:TOKEN缓存处理
- 信息检索的评价指标(Precision, Recall, F-score, MAP)
- https知识了解与javaweb中如何使用https
- Java设计模式之备忘录模式
- OC_06_02 NSMutableDictionary
- 《TCP/IP详解》卷2实现中关于组播的处理描述
- 使用Supervisor管理resque
- freemarker常见语法大全
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等