Java 获取微信用户openid
一、 前端
前端获取当前用户的用户授权码 code
二、后端
获取微信小程序的 openid
/**
* 得到openId—
* @param appid 小程序ID
* @param key 小程序密钥
* @param code 前端传入 用户授权码
* @return
*/
private Sting getOpenId(String appid, String key, String code, String type) {
String openId = null;
String resultOpen = PayCommonUtil.sendGet("https://api.weixin.qq.com/sns/jscode2session",
"appid=" + appid +//小程序ID
"&secret="+ key + //小程序密钥
"&js_code="+ code + //前端 传入 code
"&grant_type=authorization_code");
JSONObject jsonObject = JSONObject.parseObject(resultOpen);
if (jsonObject.containsKey("errcode")) {
log.info("code无效,openId获取失败——小程序获取");
/*
个人业务代码
*/
}
openId = jsonObject.get("openid").toString();
return openId ;
}
获取微信公众号的 openid
/**
* 得到openId—
* @param appid 公众号ID
* @param key 公众号密钥
* @param code 前端传入 用户授权码
* @return
*/
private Sting getOpenId(String appid, String key, String code, String type) {
String openId = null;
String resultOpen = PayCommonUtil.sendGet("https://api.weixin.qq.com/sns/oauth2/access_token",
"appid=" + appid +//公众号ID
"&secret="+ key + //公众号密钥
"&code="+ code + //前端 传入 code
"&grant_type=authorization_code");
JSONObject jsonObject = JSONObject.parseObject(resultOpen);
if (jsonObject.containsKey("errcode")) {
log.info("code无效,openId获取失败——小程序获取");
/*
个人业务代码
*/
}
openId = jsonObject.get("openid").toString();
return openId ;
}
三、注意
1、 code 在一定时间段是不变的,不可重复是否
2、 小程序和公众号获取 用户openid ,就获取地址不同
3、官方文档: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html