From d77a5909232ec1829548fff01915a0ca7dc2269f Mon Sep 17 00:00:00 2001 From: puhanshu <a9236326> Date: 星期五, 14 一月 2022 11:23:09 +0800 Subject: [PATCH] 微信授权登录修改 --- springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java | 26 +++---------- springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java | 57 +++++++++++++++++++++++----- 2 files changed, 52 insertions(+), 31 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java index 0cd4476..cef7a88 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java +++ b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/api/MicroCommercialStreetApi.java @@ -1,6 +1,9 @@ package com.panzhihua.shop_backstage.api; +import static java.util.Objects.isNull; import static java.util.Objects.nonNull; + +import java.util.regex.Pattern; import javax.annotation.Resource; import javax.validation.Valid; @@ -66,15 +69,11 @@ import com.panzhihua.shop_backstage.model.request.LoginRequest; import com.panzhihua.shop_backstage.model.vos.LoginBody; -import cn.binarywang.wx.miniapp.api.WxMaService; -import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; - -import java.util.regex.Pattern; /** * @title: MicroCommercialStreetApi @@ -106,23 +105,10 @@ return R.fail("缺少登录参数"); } log.info(code); - WxMaService maService = wxMaConfiguration.getMaH5Service(); - WxMaJscode2SessionResult sessionInfo = null; - try { - sessionInfo = maService.jsCode2SessionInfo(code); - } catch (Exception e) { - log.error("微信登录失败【{}】", e.getMessage()); - if (code.equals("22")) { - sessionInfo = new WxMaJscode2SessionResult(); - sessionInfo.setOpenid("88888888"); - sessionInfo.setSessionKey("9999999"); - } else { - return R.fail("微信登录失败"); - } + String openid = wxMaConfiguration.retrieveOpenId(code); + if (isNull(openid)) { + return R.fail("登录失败"); } - log.info("微信登录成功【{}】", JSONObject.toJSONString(sessionInfo)); - log.info("loginRequest参数【{}】", JSONObject.toJSONString(loginRequest)); - String openid = sessionInfo.getOpenid(); R r = userService.getMcsUserByOpenId(openid); if (R.isOk(r) && nonNull(r.getData())) { McsLoginUserInfoVO loginUserInfoVO = JSONObject.parseObject(JSONObject.toJSONString(r.getData()), McsLoginUserInfoVO.class); diff --git a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java index 7d5fe55..3d35c18 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java +++ b/springcloud_k8s_panzhihuazhihuishequ/shop_backstage/src/main/java/com/panzhihua/shop_backstage/config/WxMaConfiguration.java @@ -1,12 +1,18 @@ package com.panzhihua.shop_backstage.config; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import javax.annotation.Resource; import org.springframework.stereotype.Component; -import cn.binarywang.wx.miniapp.api.WxMaService; -import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; -import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl; +import com.alibaba.fastjson.JSONObject; +import com.panzhihua.common.utlis.HttpUtils; + import lombok.extern.slf4j.Slf4j; /** @@ -19,16 +25,45 @@ @Component public class WxMaConfiguration { + private static final String OAUTH2_URL = "https://api.weixin.qq.com/sns/oauth2/access_token"; + @Resource private WxH5Properties wxH5Properties; - public WxMaService getMaH5Service() { - WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl(); - config.setAppid(wxH5Properties.getAppid()); - config.setSecret(wxH5Properties.getSecret()); - config.setMsgDataFormat(wxH5Properties.getMsgDataFormat()); - WxMaService wxMaService = new WxMaServiceImpl(); - wxMaService.setWxMaConfig(config); - return wxMaService; + public String retrieveOpenId(String code) { + HashMap<String, String> params = new HashMap<>(); + params.put("appid", wxH5Properties.getAppid()); + params.put("secret", wxH5Properties.getSecret()); + params.put("code", code); + params.put("grant_type", "authorization_code"); + String result = HttpUtils.sendGet(OAUTH2_URL, createLinkStringByGet(params)); + try { + JSONObject parseObject = JSONObject.parseObject(result); + if (parseObject.containsKey("openid")) { + String openid = parseObject.get("openid").toString(); + log.info("网页授权获取到openId:【{}】", openid); + return openid; + } + } catch (Exception e) { + log.error("网页授权失败"); + e.printStackTrace(); + } + return null; + } + + private static String createLinkStringByGet(Map<String, String> params) { + List<String> keys = new ArrayList<>(params.keySet()); + Collections.sort(keys); + StringBuilder stringBuilder = new StringBuilder(); + for (int i = 0; i < keys.size(); i++) { + String key = keys.get(i); + String value = params.get(key); + if (i == keys.size() - 1) { + stringBuilder.append(key).append("=").append(value); + } else { + stringBuilder.append(key).append("=").append(value).append("&"); + } + } + return stringBuilder.toString(); } } -- Gitblit v1.7.1