我使用的是ssm环境,并且参考了https://blog.csdn.net/abgglive/article/details/80666807老大哥的文章
无非就是在前端获取code然后传到后端以下是核心代码 onLoad: function () { // 查看是否授权 wx.getSetting({ success(res) { if (res.authSetting['scope.userInfo']) { // 已经授权,可以直接调用 getUserInfo 获取头像昵称 wx.getUserInfo({ success: function (res) { console.log(res.userInfo); } }) } } }); wx.login({ success(res) { if (res.code) { // console.log(res.code); // //发起网络请求 wx.request({ url: '你的服务器', data: { code: res.code }, success(res) { console.log(res.data); } }) } else { console.log('登录失败!' + res.errMsg) } } }) } Controller类 @RequestMapping("/getOpenId") public String getOpenId(String code) { //登录凭证不能为空 if (code == null || code.length() == 0) { Map map = new HashMap(2); map.put("status" , 0); map.put("msg" , "code 不能为空"); return JsonUtil.getJsonStr(map); } String wxspAppid = StaticConst.WX_APPID; String wxspSecret = StaticConst.WX_SECRET; String grant_type = StaticConst.GRANT_TYPE; //1、向微信服务器 使用登录凭证 code 获取 session_key 和 openid //请求参数 String params = "appid=" + wxspAppid + "&secret=" + wxspSecret + "&js_code=" + code + "&grant_type=" + grant_type; //发送请求 String sr = HttpUtil.sendGet("https://api.weixin.qq.com/sns/jscode2session" , params); System.out.println(sr); return sr; } HttpUtil package com.tmall.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; /** * 用于发送Http请求,可以发送get和post * @ClassName: HttpUtil * @Author: Xlu * @Date: 2020/10/21 22:07 * @Version 11 **/ public class HttpUtil { /** * 向指定URL发送GET方法的请求 * * @param url 发送请求的URL * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return URL 所代表远程资源的响应结果 */ public static String sendGet(String url , String param) { String result = ""; BufferedReader in = null; try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); // 打开和URL之间的连接 URLConnection connection = realUrl.openConnection(); // 设置通用的请求属性 connection.setRequestProperty("accept" , "*/*"); connection.setRequestProperty("connection" , "Keep-Alive"); connection.setRequestProperty("user-agent" , "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立实际的连接 connection.connect(); // 获取所有响应头字段 Map<String, List<String>> map = connection.getHeaderFields(); // 遍历所有的响应头字段 for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } // 定义 BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; while (( line = in.readLine() ) != null) { result += line; } } catch (Exception e) { System.out.println("发送GET请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } /** * 向指定 URL 发送POST方法的请求 * * @param url 发送请求的 URL * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 * @return 所代表远程资源的响应结果 */ public static String sendPost(String url , String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(url); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept" , "*/*"); conn.setRequestProperty("connection" , "Keep-Alive"); conn.setRequestProperty("user-agent" , "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数 out.print(param); // flush输出流的缓冲 out.flush(); // 定义BufferedReader输入流来读取URL的响应 in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while (( line = in.readLine() ) != null) { result += line; } } catch (Exception e) { System.out.println("发送 POST 请求出现异常!" + e); e.printStackTrace(); } //使用finally块来关闭输出流、输入流 finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } return result; } } JsonUtil package com.tmall.utils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; /** * 处理Json数据工具类 * * @ClassName: JsonUtil * @Author: Xlu * @Date: 2020/9/30 19:05 * @Version 11 **/ public class JsonUtil { private static ObjectMapper mapper = new ObjectMapper(); /** * 准换为Json字符串 * * @param obj List Map Bean * @return java.lang.String json字符串 * @Author Xlu * @Date 20:04 2020/10/2 */ public static String getJsonStr(Object obj) { try { return mapper.writeValueAsString(obj); } catch (JsonProcessingException e) { e.printStackTrace(); return null; } } } 常量类 package com.tmall.pojo; /** * 用于存放静态常量类 * * @ClassName: StaticConst * @Author: Xlu * @Date: 2020/10/21 22:19 * @Version 11 **/ public class StaticConst { /** 小程序id */ public final static String WX_APPID = "到微信公众平台开发那里查"; /** 小程序密钥 */ public final static String WX_SECRET = "111"; /** 授权类型 */ public final static String GRANT_TYPE = "authorization_code"; } 就这么简单,结果就来了