获取openId方法,其中code是自动获取的,此文运行后就会获取用户的openId
@RequestMapping(value="/openIdMsg",produces = MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8")
@ResponseBody
public void openIdMsg(HttpServletRequest request,HttpServletResponse response) throws IOException{
Map<String, Object> map = new HashMap<String, Object>();
String redirect_uri=URLEncoder.encode("https://www.mfzhosp.com/mkkMoblie/accessToken/WxOpenIdServlet, "UTF-8");
StringBuffer url=new StringBuffer("https://open.weixin.qq.com/connect/oauth2/authorize?redirect_uri="+redirect_uri+
"&appid=这里写自己公众号的appid&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
response.sendRedirect(url.toString());
}
@RequestMapping(value="/WxOpenIdServlet",produces = MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8")
@ResponseBody
public String WxOpenIdServlet(HttpServletRequest request,HttpServletResponse response){
Map<String, Object> map = new HashMap<String, Object>();
String code = request.getParameter("code");
if (!isNull(code)) {
map.put("type", false);
map.put("massage", "未获取到code");
return JsonMapper.getInstance().toJson(map);
}
Map params = new HashMap();
params.put("secret", ""); // 公众号密钥
params.put("appid", ""); // 公众号appid
params.put("grant_type", "authorization_code");
params.put("code", code);
String result = HttpGetUtil.httpRequestToString(
"https://api.weixin.qq.com/sns/oauth2/access_token", params);
JSONObject jsonObject = JSONObject.fromObject(result);
String openid = jsonObject.get("openid").toString();
map.put("openId", openid);
System.out.println("得到的openid为:"+openid);
return JsonMapper.getInstance().toJson(map);
}
HttpGetUtil中代码,如自己有也可以使用自己的类添加如下方法即可。
public static String httpRequestToString(String url,
Map<String,String> params) {
String result = null;
try {
InputStream is = httpRequestToStream(url, params);
BufferedReader in = new BufferedReader(new InputStreamReader(is,"UTF-8"));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
buffer.append(line);
}
result = buffer.toString();
} catch (Exception e) {
return null;
}
return result;
}
private static InputStream httpRequestToStream(String url,
Map<String, String> params) {
InputStream is = null;
try {
String parameters = "";
boolean hasParams = false;
for(String key : params.keySet()){
String value = URLEncoder.encode(params.get(key), "UTF-8");
parameters += key +"="+ value +"&";
hasParams = true;
}
if(hasParams){
parameters = parameters.substring(0, parameters.length()-1);
}
url += "?"+ parameters;
URL u = new URL(url);
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Accept-Charset", "UTF-8");
conn.setRequestProperty("contentType", "utf-8");
conn.setConnectTimeout(50000);
conn.setReadTimeout(50000);
conn.setDoInput(true);
//设置请求方式,默认为GET
conn.setRequestMethod("GET");
is = conn.getInputStream();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return is;
}
评论区