公司开始接触公众号,要开发一个平台。
首先需要的就是获取用户信息啊。
于是去微信官方网站寻找相关接口,附文档地址:
官方文档
开始的第一步,配置环境:
- 公众号添加开发者账号;
- 配置授权域名;
- 配置业务域名;
- 另外还有微信开发者工具下载。
第二步 拿 code
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=PAGE&scope=snsapi_base&state=yunnying#wechat_redirect
注册填写自己的appid和自己的page
第三步 根据CODE获取OPENID
private static String wxUrl="https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
/**
* 获取微信openid
* @param appid appid
* @param secret secret
* @param jscode jscode
* @return
* err: {"errcode":40013,"errmsg":"invalid appid, hints: [ req_id: 0PFNQa0729th42 ]"}
* success:{"session_key":"R+AJs7g+f5841HSn51W0bA==","openid":"oLw0k0Ss_Ntjj-o5KT13L8PcXbsU"}
*/
public static Map getOpenId(String appid,String secret, String jscode){
String requestUrl =
wxUrl.replace("APPID", appid).replace("SECRET", secret).replace("CODE", jscode);
String oauth = restTemplate.getForObject(requestUrl, String.class);
System.out.println("oauth:"+oauth);
try {
return (Map)JSON.parseObject(oauth,Map.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
第四步 获取微信token
private static String wxTokenUrl="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";
public static String getWxToken(String appid,String secret) {
String requestUrl =
wxTokenUrl.replace("APPID", appid).replace("SECRET", secret);
String oauth = restTemplate.getForObject(requestUrl, String.class);
System.out.println("oauth:"+oauth);
try {
return ((Map)JSON.parseObject(oauth,Map.class)).get("access_token");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
第五步 获取用户信息
private static String wxUserInfoUrl="https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID";
/**
* 获取微信openid 详细信息 公众号功能
* @param appid appid
* @param secret secret
* @param openId openId
* @return
* err: {"errcode":40013,"errmsg":"invalid appid, hints: [ req_id: 0PFNQa0729th42 ]"}
* success:{"session_key":"R+AJs7g+f5841HSn51W0bA==","openid":"oLw0k0Ss_Ntjj-o5KT13L8PcXbsU"}
*/
public static Map getOpenIdDetail(String appid,String secret, String openId){
String accessToken=getWxToken(appid,secret);
String requestUrl =
wxUserInfoUrl.replace("ACCESS_TOKEN", accessToken).replace("OPENID", openId);
String oauth = restTemplate.getForObject(requestUrl, String.class);
System.out.println("oauth:"+oauth);
try {
oauth=new String(oauth.getBytes("ISO-8859-1"),"UTF-8");
return (Map)JSON.parseObject(oauth,Map.class);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
注意,微信的中文有乱码需要转化(本例已经转成utf-8)。如果用户未关注公众号,是无法拿到用户的详细信息的。

原文地址:获取微信公众号openid以及用户详情-一张虎抓蛙
网友评论