微信公众号开发(三)——获取 Access_Token

获取access token

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

公众平台的API调用所需的access_token的使用及生成方式说明:

1、为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则会造成access_token覆盖而影响业务;
2、目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器对外输出的依然是老access_token,此时公众平台后台会保证在刷新短时间内,新老access_token都可用,这保证了第三方业务的平滑过渡;
3、access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。

公众号调用各接口时都需使用access_token,我们如何获取access_token?

1. 创建 token 的 Po 类

根据返回值说明,创建 Po 类

微信公众号开发(三)——获取 Access_Token_第1张图片

AccessToken

public class AccessToken {
    private String token;
    private int expiresIn;

根据微信的 APPID ,APPSECRET 获取 token:

private static final String APPID = "填自己的";
private static final String APPSECRET = "填自己的";
private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
public static AccessToken getAccessToken() throws ParseException, IOException{
        AccessToken token = new AccessToken();
        String url = ACCESS_TOKEN_URL.replace("APPID", APPID).replace("APPSECRET", APPSECRET);
        JSONObject jsonObject = doGetStr(url);
        if(jsonObject!=null){
            token.setToken(jsonObject.getString("access_token"));
            token.setExpiresIn(jsonObject.getInt("expires_in"));
        }
        return token;
    }

2. 获取 token

public class WeixinTest {
    public static void main(String[] args) throws ParseException, IOException {

        //返回票据
        AccessToken token = WeiXinUtil.getAccessToken();
        System.out.println("票据"+token.getToken());
        System.out.println("有效时间"+token.getExpiresIn());
    }
}

票据
4Utt_7vDsUROljc9HHly5QQwXIuLJ7ixxpQ2hhhjhPdw7ULYhygsM8Af8Tv404oCopQMkGsOSsU7UsDzy0hKcGLdVfXWIRmU5oFWSHI4WcoUFSjAFAMXK
有效时间7200

token的获取次数有限,如果微信公众号的使用人数很多,不能每次都创建新的 token。同时产生多个 token 会产生冲突,且 token 的有效时间是 2 小时,所以可以把获取的 token 写入文件中,当失效是重新获取 token ,这样一天最多获取 12 次。

你可能感兴趣的:(微信公众号开发(三)——获取 Access_Token)