JiuyeXD's Blog
九叶
九叶博主

越努力 越幸运

登录
夜间

通过微信授权登录code获取openid

请求地址

获取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");
}
THE END