微信公众号开发 ----微信获取access_token(2)
程序员文章站
2024-01-08 13:09:52
...
首先微信公众号配置
现在开始获取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
获取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 ;
}
上一篇: jq 如何显示出来下拉框value的值