【微信公众号】获取获取微信的access_token
什么是access_token?
公众平台的API调用所需的access_token的使用及生成方式说明:
2、目前Access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡;
3、Access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。
首先申请开发者身份,填写基本信息后,在基本配置中进行服务器的配置:
由于我这时测试开发者,我们就直接将其写死
文档看完后,我们接下来进行测试:
判断签名是否一致:
/**
* 判断签名是否一致
* @param signature
* @param timestamp
* @param nonce
* @param token
* @return
*/
@Override
public boolean verifyInfo(String signature, String timestamp, String nonce, String token) {
TreeSet<String> set = new TreeSet<String>();
set.add(token);
set.add(timestamp);
set.add(nonce);
StringBuilder sb = new StringBuilder();
for (String item : set) {
sb.append(item);
}
String sign = DigestUtils.sha1Hex(sb.toString());
return signature.equalsIgnoreCase(sign);
}
/**
* @author evan_qb
* @date 2018/8/13 14:54
* HttpClient工具
*/
public class HttpClientUtil {
/**
* POST请求
* @param url
* @param jsonStr
* @return
*/
public static String sendpostJson(String url, String jsonStr){
String result = null;
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(url);
CloseableHttpResponse response = null;
try {
post.setEntity(new ByteArrayEntity(jsonStr.getBytes("UTF-8")));
response = httpClient.execute(post);
if (response != null && response.getStatusLine().getStatusCode() == 200){
HttpEntity entity = response.getEntity();
result = JsonMapper.object2String(entity);
}
}catch (Exception e){
}finally {
try {
httpClient.close();
if (response != null){
response.close();
}
} catch (IOException e) {
}
}
return null;
}
/**
* GET请求
* @param url
* @return
*/
public static String sendGet(String url,Map<String,String> map){
String result = null;
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet get = new HttpGet(url);
CloseableHttpResponse response = null;
try{
//创建uri
URIBuilder builder = new URIBuilder(url);
if (map != null){
for (String key: map.keySet()){
builder.addParameter(key,map.get(key));
}
}
URI uri = builder.build();
//创建get请求
HttpGet httpGet = new HttpGet(uri);
//执行请求
response = httpClient.execute(httpGet);
if (response.getStatusLine().getStatusCode() == 200){
result = EntityUtils.toString(response.getEntity(),"UTF-8");
}
}catch (Exception e){
}finally {
try {
httpClient.close();
if (response != null){
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
}
接着我们进行输入地址获取我们的access_token,就能接着下面的开发了
