微信java开发3——获取access_token
来源:互联网 发布:js点击按钮旋转图片 编辑:程序博客网 时间:2024/06/06 08:36
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 {
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;
}
- 微信java开发3——获取access_token
- [3]java微信开发-获取access_token
- 微信&java 开发4 access_token获取
- java 微信开发获取access_token
- 微信asp+sqlser开发实例——获取access_token
- 微信公众号开发——获取access_token
- 微信开发-获取access_token
- 微信公众号开发之获取access_token[java版]
- 微信开发的access_token的获取
- 微信access_token的获取开发示例
- 微信开发获取access_token函数库
- 微信公众号开发获取access_token
- 微信开发专题---4获取access_token
- 微信开发,access_token定时获取
- 微信开发之access_token获取
- 微信公众号开发-获取access_token
- java微信公众平台获取access_token
- 微信公众平台开发—access_token的获取存储与更新(Python开发)
- 老外的个人网站原来是这样设计的:17个最佳范例给你灵感
- 【转载】Jdk jre jvm的区别和联系
- Akka(35): Http:Server side streaming
- Java标识符
- js 数组与对象
- 微信java开发3——获取access_token
- C++ 接口(抽象类)
- 面试心得与总结:BAT、网易、蘑菇街
- dpdk-ixgbe 详解
- redis内部数据结构
- 【Java作业】2017.10.28 / 10.29
- Cells(Rows.Count, 1).End(xlUp).Row的含义
- 线程基础知识
- springboot学习笔记 -- Hello Word、返回json数据、fastJson、热部署