java微信公众号开发获取微信用户信息
2018-03-04 21:25
633 查看
此博文参考:https://www.cnblogs.com/sxmny/articles/4969119.html
获取微信用户的基础信息(包括头像,昵称,所在地等)大体分为如下三步:
1.获取code;
只有用户同意授权才能拿到用户的微信信息.用户同意授权后,我们就可以拿到code值.
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 默认有2个值snsapi_base和snsapi_userinfo,这个接口会根据scope 来生成不同的code,并且获取不同作用的access_token ,不管scope传什么值都能在得到对应access_token的同时得到open_id, 如果你只需要得到opend_id 那使用snsapi_base参数到此结束了,如果需要获取用户的其他信息比如 昵称 地址 就要snsapi_userinfo 会弹出授权2.获取access_token 用户网页授权access_token 获取接口地址是 https://api.weixin.qq.com/sns/oauth2/access_token? appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 网页授权access_token 需要通过code去获取,此code即为之前获取到的(code一般由前台根据用户是否同意授权获取到,然后传递给后台,后台直接用就可以). 3 .获取用户信息 https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN access_token即为第二部获取的值注意:通过以上三步你可以获取到一个微信用户的基本信息,但是并不能获取到公众号关注者的微信用户信息.想要获取到微信公众号关注者的微信信息,也需要上述三步,只是获取access_token和获取用户的接口有区别.如下:前提条件:1.用户同意授权公众号获取其用户信息;2:用户关注了此公众号;获取用户信息接口:https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN (此接口的access_token 是调用基础接口获取到的access_token, 不是网页授权获取到的access_token(上述第2步获取到的),直白点说,就是下面这个接口获取到的access_token)
基础接口获取access_token, 获取接口如下: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET针对公众号获取微信用户的信息,微信的解释:是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
此博文上述内容参考:https://www.cnblogs.com/sxmny/articles/4969119.html
代码如下:
/**
* 获取微信用户的openId
* @param appId
* @param code
* @param secret
* @return
*/
public Map getOpenId(String appId, String code, String secret){
Map map = new HashMap();
String resultUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+ appId +"&secret="+ secret +"&code="+ code +"&grant_type=authorization_code";
// 获取openid
String json = HttpUtil.get(resultUrl);
JSONObject jsonObject = JacksonUtil.toEntity(json, JSONObject.class);
Object openid1 = jsonObject.get("openid");
String openid="";
if (null != openid1){
openid = openid1.toString();
}
map.put("openid",openid);
return map;
}
获取微信用户的基础信息(包括头像,昵称,所在地等)大体分为如下三步:
1.获取code;
只有用户同意授权才能拿到用户的微信信息.用户同意授权后,我们就可以拿到code值.
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 默认有2个值snsapi_base和snsapi_userinfo,这个接口会根据scope 来生成不同的code,并且获取不同作用的access_token ,不管scope传什么值都能在得到对应access_token的同时得到open_id, 如果你只需要得到opend_id 那使用snsapi_base参数到此结束了,如果需要获取用户的其他信息比如 昵称 地址 就要snsapi_userinfo 会弹出授权2.获取access_token 用户网页授权access_token 获取接口地址是 https://api.weixin.qq.com/sns/oauth2/access_token? appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 网页授权access_token 需要通过code去获取,此code即为之前获取到的(code一般由前台根据用户是否同意授权获取到,然后传递给后台,后台直接用就可以). 3 .获取用户信息 https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN access_token即为第二部获取的值注意:通过以上三步你可以获取到一个微信用户的基本信息,但是并不能获取到公众号关注者的微信用户信息.想要获取到微信公众号关注者的微信信息,也需要上述三步,只是获取access_token和获取用户的接口有区别.如下:前提条件:1.用户同意授权公众号获取其用户信息;2:用户关注了此公众号;获取用户信息接口:https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN (此接口的access_token 是调用基础接口获取到的access_token, 不是网页授权获取到的access_token(上述第2步获取到的),直白点说,就是下面这个接口获取到的access_token)
基础接口获取access_token, 获取接口如下: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET针对公众号获取微信用户的信息,微信的解释:是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
此博文上述内容参考:https://www.cnblogs.com/sxmny/articles/4969119.html
代码如下:
/**
* 获取微信用户的openId
* @param appId
* @param code
* @param secret
* @return
*/
public Map getOpenId(String appId, String code, String secret){
Map map = new HashMap();
String resultUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+ appId +"&secret="+ secret +"&code="+ code +"&grant_type=authorization_code";
// 获取openid
String json = HttpUtil.get(resultUrl);
JSONObject jsonObject = JacksonUtil.toEntity(json, JSONObject.class);
Object openid1 = jsonObject.get("openid");
String openid="";
if (null != openid1){
openid = openid1.toString();
}
map.put("openid",openid);
return map;
}
/** * 获取微信用户信息 * @param code * @return */ public Map getWXInfo(String code, String appId,String secret) { if (StrUtil.isNotBlank(code)){ Map tokenMap = getOpenId(appId, code, secret); String openid = tokenMap.get("openid").toString(); if (StrUtil.isNotBlank(openid)){ // 获取基础支持的access_token String resultUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ appId +"&secret="+ secret; String json = HttpUtil.get(resultUrl); JSONObject jsonObject = JacksonUtil.toEntity(json, JSONObject.class); String access_token = jsonObject.get("access_token").toString(); // 获取用户信息 String resultUrl2 = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="+ access_token +"&openid="+ openid +"&lang=zh_CN"; String json2 = HttpUtil.get(resultUrl2); JSONObject jsonObject2 = JacksonUtil.toEntity(json2, JSONObject.class); String nickname = jsonObject2.get("nickname").toString(); String headimgurl = jsonObject2.get("headimgurl").toString(); if (nickname == null || headimgurl == null){ throw new BadRequestException("未关注,请关注后重试!"); } String sex = jsonObject2.get("sex").toString(); String country = jsonObject2.get("country").toString(); String province = jsonObject2.get("province").toString(); String city = jsonObject2.get("city").toString(); HashMap<String,Object> map = new HashMap<>(); map.put("nickName",nickname); map.put("country",country); map.put("provinceName",province); map.put("cityName",city); map.put("headImg",headimgurl); map.put("openId",openid); map.put("sex",sex); return map; } } return null; }
相关文章推荐
- 微信公众号开发二:关于授权网页获取用户微信信息注册用户的开发
- 微信公众平台开发实战Java版之微信获取用户基本信息
- 微信公众号开发-微信网页授权获取用户openid以及用户信息的步骤
- Django微信公众号开发(一)公众号内网页授权登录后微信获取用户信息
- 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息
- java版 微信公众号获取微信用户基本信息
- 微信公众号开发-微信网页授权获取用户openid以及用户信息的步骤
- Java微信公众平台开发(十二)——微信用户信息的获取
- [置顶] java微信开发-之如何获取openid 和用户信息
- 微信公共号开发教程java版——获取用户基本信息(UnionID机制)(七)
- 微信公众号开发(四)--微信网页授权,获取用户信息
- 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息
- 微信公众平台开发实战Java版之微信获取用户基本信息
- Java微信开发(通过java程序获取用户个人信息)
- Java微信公众平台开发(十二)——微信用户信息的获取
- Java微信公众号开发之通过微信公众号获取用户信息
- 第七篇 :微信公众平台开发实战Java版之如何获取微信用户基本信息
- yershop商城系统Thinkphp开发(四)——微信篇1:微信公众号静默授权注册及获取用户信息
- Java微信公众号开发:网页授权获取用户基本信息
- Java微信公众平台开发(12) 微信用户信息的获取