欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

微信公众号开发 ----微信获取access_token(2)

程序员文章站 2024-01-08 13:09:52
...

首先微信公众号配置

微信公众号开发 ----微信获取access_token(2)
微信公众号开发 ----微信获取access_token(2)

现在开始获取ACCESS_TOKEN

有点坑的是微信有2个ACCESS_TOKEN( 一个用code一个不要)

基础接口的token 获取接口是
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

上方法:

    /**
     * 获取当前公众号的token
     * @return
     * https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
     */
    public static String getAccessToken(String code) {
 		StringBuffer sb = new StringBuffer();
        //头
        sb.append("https://api.weixin.qq.com/cgi-bin/token?");
        //grant_type
        sb.append("grant_type=client_credential");
        //appID
        sb.append("&appid=" + wechatConfig.getAppID());
        //secret
        sb.append("&secret=" + wechatConfig.getAppsecret());
        //创建连接
        //解析微信响应回来的json字符串
        String jsonStr = HttpClientUtil.doGet(sb.toString());
        //打印一下
        System.out.println(jsonStr);
        JSONObject jsonObject = JSONObject.parseObject(jsonStr);
        //取得access_token 
        access_token = jsonObject.getString("access_token");
        return access_token;
    }

用户网页授权access_token 获取接口地址是

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
1.取得code

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
scope 参数 snsapi_base 和 snsapi_userinfo
微信公众号开发 ----微信获取access_token(2)
获取code
微信访问以下方法返回的地址

 /**
     * @param url   地址 微信重定向的地址
     * @param scope 权限
     * @param state 重定向的参数
     * @return 拼接微信获取code的地址
     */
    public static String getCode(String url, String scope, String state) {

//        https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
        StringBuffer sb = new StringBuffer();
        //头
        sb.append("https://open.weixin.qq.com/connect/oauth2/authorize?");
        //appID
        System.out.println(wechatConfig.getAppID());
        sb.append("&appid=" + wechatConfig.getAppID());
        //redirect_uri
        sb.append("&redirect_uri=" + url);
        //secret
        sb.append("&response_type=code");
        // scope
        sb.append("&scope=" + scope);
        sb.append("&state=" + state + "#wechat_redirect");
        //创建连接
        //解析微信响应回来的json字符串
        String jsonStr = sb.toString();
        return jsonStr;
    }

//取得code
  String code = request.getParameter("code");
  

通过code 换取access_token

 /**
     * 获取当前公众号的AccessCodeToken
     *
     * @param code
     * @return
     */
    public static String getAccessCodeToken(String code) {
        //如果redis中有token name就从redis中拿
        if (access_code_token != null) {
            return access_code_token;
        }
//        https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
        StringBuffer sb = new StringBuffer();
        //头
        sb.append("https://api.weixin.qq.com/sns/oauth2/access_token?");
        //appID
        sb.append("&appid=" + wechatConfig.getAppID());
        //secret
        sb.append("&secret=" + wechatConfig.getAppsecret());
        // code
        sb.append("&code=" + code);
        sb.append("&grant_type=authorization_code");
        //创建连接
        //解析微信响应回来的json字符串
        String jsonStr = HttpClientUtil.doGet(sb.toString());
        System.out.println(jsonStr);
        return jsonStr ;
    }