如何保证access_token长期有效--微信公众平台开发
2017-10-13 14:10
651 查看
http://blog.csdn.net/qq_33556185/article/details/52758781
WeixinAccessToken
View Code
import javax.servlet.ServletContext; import org.apache.log4j.Logger; import org.springframework.web.context.ContextLoader; import org.springframework.web.context.WebApplicationContext; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; public class TokenUtil { private static final Logger logger = Logger.getLogger(MessageService.class); public static String getAccessToken(String appId, String appSecret,String flag) { WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext(); ServletContext application = webApplicationContext.getServletContext(); if (application.getAttribute(flag) != null) { WeixinAccessToken tempToken = (WeixinAccessToken) application.getAttribute(flag); if (System.currentTimeMillis() < tempToken.getExpirationTime()) { return tempToken.getAccessToken(); } else { return getAccessTokenContent(appId, appSecret, application,flag); } } return getAccessTokenContent(appId, appSecret, application,flag); } private static String getAccessTokenContent(String appId, String appSecret, ServletContext application,String flag) { WeixinAccessToken accessTokenFromUrl = getAccessTokenFromUrl(appId, appSecret); String accessToken = null; if (accessTokenFromUrl != null) { application.setAttribute(flag, accessTokenFromUrl); accessToken = accessTokenFromUrl.getAccessToken(); logger.info("accessToken from url"); } return accessToken; } public static WeixinAccessToken getAccessTokenFromUrl(String appId, String appSecret) { String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET"; requestUrl = requestUrl.replace("APPID", appId); requestUrl = requestUrl.replace("SECRET", appSecret); JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "GET", null); WeixinAccessToken tokenModel = null; if (null != jsonObject) { try { String access_token = jsonObject.getString("access_token"); int expires_in = jsonObject.getIntValue("expires_in"); tokenModel = new WeixinAccessToken(access_token, System.currentTimeMillis() + expires_in*1000); } catch (JSONException e) { logger.info("获取token失败 errcode:" + jsonObject.getIntValue("errcode") + ",errmsg:" + jsonObject.getString("errmsg")); } } return tokenModel; } }
WeixinAccessToken
public class WeixinAccessToken { private String accessToken; private long expirationTime; public WeixinAccessToken(){ } public WeixinAccessToken(String accessToken,long expirationTime){ this.accessToken=accessToken; this.expirationTime=expirationTime; } public String getAccessToken() { return accessToken; } public void setAccessToken(String accessToken) { this.accessToken = accessToken; } public long getExpirationTime() { return expirationTime; } public void setExpirationTime(long expirationTime) { this.expirationTime = expirationTime; } }
View Code
相关文章推荐
- 微信公众平台开发教程第22篇-如何保证access_token长期有效
- 微信公众平台开发教程第22篇-如何保证access_token长期有效
- [051] 微信公众平台开发教程第22篇-如何保证access_token长期有效
- 微信公众平台开发——如何保证access_token长期有效?
- 微信公众平台开发教程第22篇-如何保证access_token长期有效
- 微信公众平台开发教程第22篇-如何保证access_token长期有效
- 微信公众平台开发教程第22篇-如何保证access_token长期有效
- 微信公众平台开发教程第22篇-如何保证access_token长期有效
- 微信公众平台开发——如何保证access_token长期有效?
- 如何保证access_token长期有效--微信公众平台开发(一)
- 微信公众平台开发教程第21篇-如何保证access_token长期有效
- 微信公众平台开发教程第22篇-如何保证access_token长期有效
- 如何保证access_token长期有效--微信公众平台开发(一)
- 微信公众平台开发教程第22篇-如何保证access_token长期有效
- 微信公众平台开发——如何保证access_token长期有效?
- [051] 微信公众平台开发教程第22篇-如何保证access_token长期有效
- [051] 微信公众平台开发教程第22篇-怎样保证access_token长期有效
- 微信公众平台开发之微信access_token如何有效长期保存
- 微信公众平台开发之微信access_token如何有效长期保存
- 如何保证access_token长期有效