Преглед изворни кода

企业微信第三方网页授权登录

seyason пре 4 месеци
родитељ
комит
12a8368335

+ 15 - 43
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/login.vue

@@ -19,17 +19,17 @@
             @click="login(ruleFormRef)">登录</el-button>
         </div>
       </el-form>
-      <!-- <el-divider content-position="center">或</el-divider>
+      <el-divider content-position="center">或</el-divider>
       <div class="m-auto mb-5" @click="wxworkCli()">
         <img class="w-9 m-auto p-1 rounded-full border-blue-300 border-2 cursor-pointer" :src="qiyeweixin" alt="">
-      </div> -->
+      </div>
       <div class="flex justify-between pb-5">
         <!-- <el-link type="primary" :underline="false">联系客服</el-link> -->
         <el-link type="primary" class="btn" style="float:left;" :underline="false">联系客服
           <div class="service">
             <p style="color: #333">联系客服</p>
             <img src="../assets/code.jpg">
-            <p><span style="color: #333">QQ:</span><span id="QQ">3052894409</span></p>
+            <p><span style="color: #333">电话:</span><span id="QQ">15895914665</span></p>
           </div>
         </el-link>
         <div class="flex justify-around">
@@ -166,24 +166,19 @@ const checkLogin = () => { // 检查登录
     isCorpWX.value = true;
   }
 
-  if (isCorpWX.value) {
-    //企业微信环境下,尝试自动登录
-    //判断企业微信,是否存在授权
-    //尝试自动登录
-    if (href.indexOf('hasTriedAutoLogin') == -1) {
-      tryAutoLogin()
-    } else if (href.indexOf("userId") > 0) {
-      //后台经过验证后,重定向过来带上了userId
-      var loginUserId = href.substring(href.indexOf("userId=") + "userId=".length);
-      if (loginUserId.includes('#/')) {
-        loginUserId = loginUserId.substring(0, loginUserId.indexOf('#/'));
-      }
-      if (loginUserId.includes('&')) {
-        loginUserId = loginUserId.substring(0, loginUserId.indexOf('&'));
-      }
-      loginByUserId(loginUserId);
+  //直接使用userId进入系统,可能是后端授权成功后跳转过来的,也能方便开发人员调试
+  if (href.indexOf("userId") > 0) {
+    isCorpWX.value = true;
+    //后台经过验证后,重定向过来带上了userId
+    var loginUserId = href.substring(href.indexOf("userId=") + "userId=".length);
+    if (loginUserId.includes('#/')) {
+      loginUserId = loginUserId.substring(0, loginUserId.indexOf('#/'));
     }
-  }
+    if (loginUserId.includes('&')) {
+      loginUserId = loginUserId.substring(0, loginUserId.indexOf('&'));
+    }
+    loginByUserId(loginUserId);
+  } 
 }
 
 const loginByUserId = (userId: any) => {
@@ -209,29 +204,6 @@ const wxworkCli = () => {
     // var weixinUrl=`https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?appid=${appId}&redirect_uri=${url}&state=0&usertype=member`;
     var weixinUrl=`https://login.work.weixin.qq.com/wwlogin/sso/login?login_type=ServiceApp&appid=${appId}&redirect_uri=${url}&state=0`;
     window.location.href = weixinUrl;
-
-    //新版模式
-    // 初始化登录组件
-    // const wwLogin = ww.createWWLoginPanel({
-    //   el: '#ww_login',
-    //   params: {
-    //     login_type: 'CorpApp',
-    //     appid: 'wwbbb6a7b539f2xxxxx',
-    //     agentid: '10000xx',
-    //     redirect_uri: 'https://work.weixin.qq.com',
-    //     state: 'loginState',
-    //     redirect_type: 'callback',
-    //   },
-    //   onCheckWeComLogin({ isWeComLogin }) {
-    //     console.log(isWeComLogin)
-    //   },
-    //   onLoginSuccess({ code }) {
-    //     console.log({ code })
-    //   },
-    //   onLoginFail(err) {
-    //     console.log(err)
-    //   },
-    // })
 }
 
 onMounted(() => {

+ 7 - 21
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/AuthRedirectController.java

@@ -168,21 +168,6 @@ public class AuthRedirectController {
         return modelAndView;
     }
 
-    @RequestMapping("/testGetProviderToken")
-    public HttpRespMsg testGetProviderToken() {
-        try {
-            String providerAccessToken = wxCorpInfoService.getNewProviderAccessToken();
-            System.out.println("providerAccessToken=="+providerAccessToken);
-            HttpRespMsg msg = new HttpRespMsg();
-            msg.setData(providerAccessToken);
-            return msg;
-        } catch (Exception e) {
-            e.printStackTrace();
-            return new HttpRespMsg();
-        }
-    }
-
-
     @RequestMapping("/corpWXScanningAuth")
     public ModelAndView corpWXScanningAuth(String code, String state)throws Exception {
         Map<String,Object> reqParam = new HashMap<String,Object>(16);
@@ -193,14 +178,14 @@ public class AuthRedirectController {
         String url = null;
         String redirecUrl = null;
         try {
-            String suiteAccessToken = getNewSuiteAccessToken();
-            System.out.println("suiteAccessToken=="+suiteAccessToken);
+            String suiteAccessToken = getLoginSuiteAccessToken();
+            System.out.println("loginSuiteAccessToken=="+suiteAccessToken);
             url = GET_CORP_USERINFO_URL.replace("SUITE_ACCESS_TOKEN", suiteAccessToken).replace("CODE", code);
             String forObject = this.restTemplate.getForObject(url, String.class);
             JSONObject obj = JSONObject.parseObject(forObject);
             System.out.println("获取授权的用户身份信息:"+obj.toString());
             String openId = obj.getString("open_userid");
-            String corpId = obj.getString("corpid");
+            String corpId = obj.getString("CorpId");
             WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
             if (wxCorpInfo != null) {
                 User curUser = null;
@@ -237,7 +222,8 @@ public class AuthRedirectController {
                 }
                 redirecUrl = "https://crm.ttkuaiban.com/#/" + router;
             } else {
-                reqParam.put("errorMsg", MessageUtils.message("access.grant"));
+                reqParam.put("errorMsg", "该企业尚未授权开通应用,请联系管理员。");
+                redirecUrl = "https://crm.ttkuaiban.com/#/login";
             }
         } catch (Exception exception) {
             exception.printStackTrace();
@@ -429,13 +415,13 @@ public class AuthRedirectController {
         return WeiXinCorpController.SUITE_ACCESS_TOKEN;
     }
 
-    private String getNewSuiteAccessToken() {
+    private String getLoginSuiteAccessToken() {
         HttpHeaders headers = new HttpHeaders();
         headers.setContentType(MediaType.APPLICATION_JSON);
         JSONObject reqParam = new JSONObject();
         reqParam.put("suite_id",  "ww19f9868980b9bb43");
         reqParam.put("suite_secret", "OeOqoMPGJH2X3k5j_wltO54q9mnXqKoJx6GkCLmOXdQ");
-        SysConfig param = sysConfigMapper.selectOne(new QueryWrapper<SysConfig>().eq("param_key", "wx_suite_ticket"));
+        SysConfig param = sysConfigMapper.selectOne(new QueryWrapper<SysConfig>().eq("param_key", "login_wx_suite_ticket"));
         if (param != null) {
             reqParam.put("suite_ticket",param.getParamValue());
         }

Разлика између датотеке није приказан због своје велике величине
+ 13 - 14
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/WeiXinCorpController.java


+ 1 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/resources/application.yml

@@ -148,6 +148,7 @@ excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/feishu-info/*,/error,/testClient
 #企业微信相关参数
 suitId: wwdd1137a65ce0fc87
 suitSecret: whAD0XKOmaJW4SwrIpu6BBwKAJbqOriHfPIKrvJ02Ic
+loginSuitId: ww19f9868980b9bb43
 #平台作为服务商的参数
 corpId: wwf11426cf618e1703
 token: aXLyq2JL1nRFFLhblHL2RX23SN46z4Q5