微信java开发3——获取access_token
2017-11-03 12:25
721 查看
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
这里提供一个获取access_token的工具类
package com.lonbon.util;
import com.lonbon.model.menu.AccessToken;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import static com.lonbon.util.MenuUtil.httpRequest;
/**
* Created by hst on 2017/10/25.
*/
public class GetTokenUtil {
}
上面的代码提到了,一天之内获取access_token也是有次数限制的。所以需要把获取到的access_token保存起来。我的做法是把access_token保存到数据库中,具体操作如下。
public String getAccessToken() {
String accessToken = “”;
//先到数据库查找access_token
Token token = tokenDAO.findToken();
if(null == token) {
//如果为null,则发请求获取
AccessToken access = GetTokenUtil.getAccessToken();
accessToken = access.getToken();
//拿到access_token后 存入数据库
token.setAccessToken(access.getToken());
token.setExpiresIn(access.getExpiresIn());
token.setCreateTime(dateToStr(new Date()));
tokenDAO.saveToken(token);
} else {
//如果不为null,判断accessToken是否失效
Date dbDate = strToDate(token.getCreateTime());
Date date = new Date();
//毫秒值
long time = date.getTime() - dbDate.getTime();
//判断accessToken是否失效
if(time < token.getExpiresIn() * 1000) {
//有效,从本地获取
accessToken = token.getAccessToken();
} else {
//无效,重新请求
AccessToken access = GetTokenUtil.getAccessToken();
accessToken = access.getToken();
//修改数据库的accessToken与创建时间
token.setAccessToken(accessToken);
token.setExpiresIn(access.getExpiresIn());
token.setCreateTime(dateToStr(new Date()));
tokenDAO.updateToken(token);
}
}
return accessToken;
}
这里提供一个获取access_token的工具类
package com.lonbon.util;
import com.lonbon.model.menu.AccessToken;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
import static com.lonbon.util.MenuUtil.httpRequest;
/**
* Created by hst on 2017/10/25.
*/
public class GetTokenUtil {
public static final String APPID = "换成你自己的APPID"; public static final String APPSECRET = "换成你自己的APPSECRET "; // 获取access_token的接口地址(GET) 限200(次/天) public final static String access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; public static AccessToken getAccessToken() { AccessToken accessToken = null; String requestUrl = access_token_url.replace("APPID", APPID).replace("APPSECRET", APPSECRET); JSONObject jsonObject = httpRequest(requestUrl, "GET", null); // 如果请求成功 if (null != jsonObject) { try { accessToken = new AccessToken(); accessToken.setToken(jsonObject.getString("access_token")); accessToken.setExpiresIn(jsonObject.getInt("expires_in")); } catch (JSONException e) { accessToken = null; } } System.out.println("accessToken: " + accessToken.getToken()); return accessToken; }
}
上面的代码提到了,一天之内获取access_token也是有次数限制的。所以需要把获取到的access_token保存起来。我的做法是把access_token保存到数据库中,具体操作如下。
public String getAccessToken() {
String accessToken = “”;
//先到数据库查找access_token
Token token = tokenDAO.findToken();
if(null == token) {
//如果为null,则发请求获取
AccessToken access = GetTokenUtil.getAccessToken();
accessToken = access.getToken();
//拿到access_token后 存入数据库
token.setAccessToken(access.getToken());
token.setExpiresIn(access.getExpiresIn());
token.setCreateTime(dateToStr(new Date()));
tokenDAO.saveToken(token);
} else {
//如果不为null,判断accessToken是否失效
Date dbDate = strToDate(token.getCreateTime());
Date date = new Date();
//毫秒值
long time = date.getTime() - dbDate.getTime();
//判断accessToken是否失效
if(time < token.getExpiresIn() * 1000) {
//有效,从本地获取
accessToken = token.getAccessToken();
} else {
//无效,重新请求
AccessToken access = GetTokenUtil.getAccessToken();
accessToken = access.getToken();
//修改数据库的accessToken与创建时间
token.setAccessToken(accessToken);
token.setExpiresIn(access.getExpiresIn());
token.setCreateTime(dateToStr(new Date()));
tokenDAO.updateToken(token);
}
}
return accessToken;
}
相关文章推荐
- [3]java微信开发-获取access_token
- 微信公众号开发-开发环境搭建并通过java代码获取微信access_token
- java微信获取access_token(java微信开发学习笔记4)
- 微信&java 开发4 access_token获取
- java 微信开发获取access_token
- 使用Java进行微信开发3- 获取access_token
- java开发微信端获取code和opendId,access_token,用户列表
- 微信公共号开发教程java版——公共号access_token的获取(五)
- 微信access_token的获取开发示例
- 微信第三方平台开发授权2:获取component_access_token,pre_auth_code
- 微信开发者-主动请求-实际开发-(3)获取access_token(C#)
- java微信签名,验证微信发送的signature,还有获取access_token和ticket
- 由获取微信access_token引出的Java多线程并发问题
- [麦先生]TP3.2之微信开发那点事[基础篇](获取access_token)
- 微信开发学习总结(二)—微信开发入门(公众号接入以及access_token获取)
- 微信开发(四):获取access_token和微信服务器IP
- 微信开发第二篇:获取全局access_token
- java微信接口之——获取access_token
- 使用Java语言开发微信公众平台(五)——获取access_token
- 夺命雷公狗---微信开发13----获取access_token