callBack.address=http://www.*****.com/ebox/api/v1/user/callBack qqAddress=https://qyapi.weixin.qq.com qqCodeAddress=https://open.weixin.qq.com corpId=ww1**281b66436**** corpSecret=GJPmBMIpKeL_-0ica48848mK2OMmILikxT******* agentId=10000** scope=snsapi_privateinfo successHtml=http://****/scan_success.html failHtml=http://****/scan_fail.html //微信扫码返回个人信息 public String callback(String code, String state, HttpServletResponse response, HttpServletRequest request) { String corpid = serverConfig.get("corpId"); String corpsecret = serverConfig.get("corpSecret"); String success = serverConfig.get("successHtml"); String fail = serverConfig.get("failHtml"); String qqAddress = serverConfig.get("qqAddress"); logger.info("code " + code); try { String token = qqAddress + "/cgi-bin/gettoken?corpid=" + corpid + "&corpsecret=" + corpsecret; //获取access_token String access_token = getResult(token, "access_token"); String userId = qqAddress + "/cgi-bin/user/getuserinfo?access_token=" + access_token + "&code=" + code; //获取用户UserId String userId_token = getResult(userId, "UserId"); String userInfoUrl = qqAddress + "/cgi-bin/user/get?access_token=" + access_token + "&userid=" + userId_token; //net.sf.json.JSONObject myJsonObject3 = path(userInfoUrl); //logger.info("userInfoUrl" + myJsonObject3); String name = getResult(userInfoUrl, "name"); String userid = userId_token; String flagId = state; WxUser wxUser = new WxUser(); wxUser.setName(name); wxUser.setUserid(userid); wxUser.setFlagID(flagId); wxUser.setCreateTime(System.currentTimeMillis()); //把个人信息存入表中 wxUserService.createWxUser(wxUser); //返回成功页面 return "redirect:" + success; } catch (Exception e) { e.printStackTrace(); } return "redirect:" + fail; } public String getResult(String url, String param) throws IOException { String resp = toAuth(url);//拼接字符串得到url Map<String, Object> map = gson.fromJson(resp, new TypeToken<Map<String, Object>>() { }.getType()); logger.info(map); return map.get(param).toString(); } public String toAuth(String Get_Token_Url) throws IOException { httpClient = HttpClients.createDefault(); httpGet = new HttpGet(Get_Token_Url); CloseableHttpResponse response = httpClient.execute(httpGet); System.out.println(response.toString()); String resp; try { HttpEntity entity = response.getEntity(); System.out.println(response.getAllHeaders()); resp = EntityUtils.toString(entity, "utf-8"); EntityUtils.consume(entity); } finally { response.close(); } return resp; }
//生成微信二维码
public WxUser wxLogin(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException { String corpid = serverConfig.get("corpId"); String callBack = serverConfig.get("callBackAddress"); String agentId = serverConfig.get("agentId"); String scope = serverConfig.get("scope"); String redirect_uri = URLEncoder.encode(callBack, "utf-8"); String qqCodeAddress = serverConfig.get("qqCodeAddress"); String url = qqCodeAddress + "/connect/oauth2/authorize?appid=APPID&redirect_uri=R_URL&response_type=code&scope=SCOPE&agentid=AGENTID&state=STATE#wechat_redirect"; //定义二维码的参数 //String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code"; String state = UUIDUtils.generateUUID(); url = url.replace("APPID", corpid).replace("R_URL", redirect_uri).replace("SCOPE", scope).replace("AGENTID", agentId).replace("STATE", state); logger.info("url" + url); WxUser wxuser = new WxUser(); wxuser.setFlagID(state); wxuser.setQrCode(url); return wxuser; }
来源:CSDN
作者:Zhuo_chao
链接:https://blog.csdn.net/qq_33329834/article/details/104628412