微信平台自动获取Token
来源:互联网 发布:百度一下淘宝男裤 编辑:程序博客网 时间:2024/05/06 15:42
微信公众平台的Token有时间限制,超时后需要重新获取。
import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.Properties;import net.sf.json.JSONObject;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * 令牌如果过期重新获取Toekn,否则返回配置文件中的Token * @author wpj */public class WeixinTokenUtil { private final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token"; private final Log logger = LogFactory.getLog(WeixinTokenUtil.class); /** * 获取令牌 * @return AccessToken */ public String getAccessToken() { String accessToken = ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String filePath = this.getClass().getResource("/") + ""; filePath = filePath.replace("classes/", "weixin.properties"); filePath = filePath.replace("file:/", ""); System.out.println("文件路径:"+filePath); Properties pro = PropertiesUtil.getProperties(filePath); String accessTime = pro.getProperty("Access_Token_Time"); if (isTokenOverTime(accessTime)) { String url = ACCESS_TOKEN_URL + "?grant_type=client_credential&"; String appID = pro.getProperty("AppID"); String secret = pro.getProperty("Secret"); String param = "appid=" + appID + "&secret=" + secret; JSONObject jasonObject = JSONObject.fromObject(HttpRequestUtil.sendHttpsGet(url, param)); accessToken = jasonObject.get("access_token").toString(); if ("".equals(accessToken)) { logger.info("获取AccessToken失败:" + jasonObject.get("errmsg").toString()); } else { pro.setProperty("Access_Token", accessToken); pro.setProperty("Access_Token_Time", sdf.format(new Date())); String flag = PropertiesUtil.setProperties(pro, filePath) ? "成功" : "失败"; logger.info("更新本地AccessToken成功" + flag + ":" + accessToken); } } else { accessToken = pro.getProperty("Access_Token"); } return accessToken; } /** * 验证令牌是否过期 * @param accessTime * @return */ private boolean isTokenOverTime(String accessTime) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); long time1 = 0; long time2 = 0; try { cal.setTime(sdf.parse(accessTime)); time1 = cal.getTimeInMillis(); cal.setTime(new Date()); time2 = cal.getTimeInMillis(); } catch (Exception e) { e.printStackTrace(); } long between_hours = (time2 - time1) / (1000 * 60); logger.info("AccessToken时间差:" + between_hours); return between_hours > 115; } public static void main(String[] args) { WeixinTokenUtil wtu = new WeixinTokenUtil(); System.out.println(wtu.getAccessToken()); }}
阅读全文
0 0
- 微信平台自动获取Token
- 微信获取token
- Java微信公众平台开发(六)——微信开发中的token获取
- Java模拟登录微信平台,主动推送消息给用户,自动绑定url、token等
- jsp 微信公众平台 token验证
- 微信公众平台Token验证失败
- jsp 微信公众平台 token验证
- 微信公众平台开发 ACCESS TOKEN
- 微信公众平台开发 ACCESS TOKEN
- 微信公众平台开发 ACCESS TOKEN
- 微信平台的token安全验证
- 模拟微信平台token验证
- 微信公众平台Token验证
- 微信公众平台下Access Token的概念及获取方法
- 【微信公众平台】获取Access Token的3种方式
- 微信获取openID以及token
- 微信开发,通过token获取signature
- java调用微信接口获取token
- 正确使用日志的10个技巧
- 【HTML/CSS】网页布局之结构
- fedora26版本安装MYSQL5.7
- Deep Learning 1 : Batch Normalization,Weight Normalization and Layer Normalization
- 窗内窗外
- 微信平台自动获取Token
- python 常见错误及调试方法(2)
- 从String理解java内存机制
- logging模块的简单使用
- C# 将引用的DLL文件放到指定的目录下
- android 点击EditText外的区域关闭软键盘
- 身份证号码有效性验证
- jsp中静态INCLUDE与动态INCLUDE的区别
- 基于 springMVC 的 RESTful HTTP API 实践(服务端)