请求地址
获取code后,请求以下链接获取access_token:
GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
请求参数
参数说明
参数 | 是否必须 | 说明 |
---|---|---|
appid | 是 | 公众号的唯一标识 |
secret | 是 | 公众号的appsecret |
code | 是 | 填写第一步获取的code参数 |
grant_type | 是 | 填写为authorization_code |
返回值
Object
返回的 JSON 数据包
属性 | 类型 | 说明 |
---|---|---|
openid | string | 用户唯一标识 |
session_key | string | 会话密钥 |
unionid | string | 用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台帐号下会返回,详见UnionID 机制说明。 |
errcode | number | 错误码 |
errmsg | string | 错误信息 |
errcode 的合法值
值 | 说明 |
---|---|
-1 | 系统繁忙,此时请开发者稍候再试 |
0 | 请求成功 |
40029 | code 无效 |
45011 | 频率限制,每个用户每分钟100次 |
代码
public class Constants {
public static final String CODE_TO_SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session?";
public static final String APPID_KEY = "appid=";
public static final String SECRET_KEY = "&secret=";
public static final String JS_CODE_KEY = "&js_code=";
public static final String GRANT_TYPE_KEY = "&grant_type=authorization_code";
}
/**
* //通过wxcode获取openid
* @param code
* @return
*/
private String getOpenIdByCode(String code) {
RestTemplate restTemplate = new RestTemplate();
String appid = wxConfig.getAppid();
String secret = wxConfig.getSecret();
String url =
Constants.CODE_TO_SESSION_URL +
Constants.APPID_KEY + appid +
Constants.SECRET_KEY + secret +
Constants.JS_CODE_KEY+ code +
Constants.GRANT_TYPE_KEY;
String jsonStr = restTemplate.getForObject(url, String.class);
JSONObject parse =(JSONObject) JSONObject.parse(jsonStr);
return (String) parse.get("openid");
}