微信公众号开发-取得AccessToken

根据公众号开发文档说明:
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

以下为access_token的取得方法:

1、在entity包下定义AccessToken类

public class AccessToken {
private String accessToke;
//过期的时间
private long expireTime; 

public AccessToken(String accessToken, String expireIn) {
		super();
		this.accessToke = accessToken;
		this.expireTime = System.currentTimeMillis() + Integer.parseInt(expireIn)* 1000;
	}

/**
 * 判断是否过期
 * @return
 */
public boolean isExpired() {
	return  System.currentTimeMillis() > this.expireTime;
}

public String getAccessToke() {
	return accessToke;
}
public void setAccessToke(String accessToke) {
	this.accessToke = accessToke;
}
public long getExpireTime() {
	return expireTime;
}
public void setExpireTime(long expireTime) {
	this.expireTime = expireTime;
	}
}

2.Service中代码

private static final String GET_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
private static final String APPID = "wx785ba36e78aa5151"; 
private static final String APPSECRET = "d82eg862e828e92351af0eee2d8a3b62";
private static AccessToken at;
/**
 * 取得accessToken
 */
private static void getToken() {
	String url = GET_TOKEN_URL.replace("APPID", APPID).replace("APPSECRET", APPSECRET);
	String tokenStr = Util.get(url);
	JSONObject jsonObj = JSONObject.fromObject(tokenStr);
	String token = jsonObj.getString("access_token");
	String expireIn = jsonObj.getString("expires_in");
	 at = new AccessToken(token, expireIn);
}

/**
 * 向外暴露accessToken
 */
public static String getAccessToken(){
	if(at == null || at.isExpired()) {
		getToken();
	}
	return at.getAccessToke();
	}

3.其中工具类中的get方法

	/**
 * 通过url取得对应accessToken 及 expire_in对应的字符串信息
 * {"access_token":"74_xyXDintjNPGi0tbPw8YOOfi36T7sZ6Jy5LA7S0MZENMoqcgTMLmXnheQs5gyS-		o7sK87tM49e4bULiIgwPzqmpgfBh52dySpeUvKT4YTk6FpjfmSjkNHIvVs7AgTkJtfu3mvKUvOR2_g0U-kWGBiAFAPZU",
 * "expires_in":7200}
 * @author Admin
 *
 */
	public class Util {
public static String get(String url) {
	try {
		URL urlObj = new URL(url);
		URLConnection connection = urlObj.openConnection();
		InputStream is = connection.getInputStream();
		
		byte[] b = new byte[1024];
		int len;
		StringBuilder sb = new StringBuilder();
		while((len = is.read(b)) !=-1) {
			sb.append(new String(b,0,len));
		}
		return sb.toString();
	} catch (Exception e) {
		e.printStackTrace();
		return null;
	}
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值