From 3a3b5bc665f526269bd622a70812bead173fbdf2 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期五, 18 七月 2025 15:59:02 +0800
Subject: [PATCH] 企业微信H5登录改回静默授权方式

---
 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java |  151 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 148 insertions(+), 3 deletions(-)

diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java
index ea29976..56e10d5 100644
--- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java
+++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java
@@ -317,11 +317,11 @@
 			builder.append("&response_type=code");
 			// 搴旂敤鎺堟潈浣滅敤鍩熴��
 			// snsapi_base锛氶潤榛樻巿鏉冿紝鍙幏鍙栨垚鍛樼殑鐨勫熀纭�淇℃伅锛圲serId涓嶥eviceId锛夛紱
-			//builder.append("&scope=snsapi_base");
-			builder.append("&scope=snsapi_privateinfo"); // 鎵嬪姩鎺堟潈浣滅敤鍩�
+			builder.append("&scope=snsapi_base");//闈欓粯鎺堟潈
+			//builder.append("&scope=snsapi_privateinfo"); // 鎵嬪姩鎺堟潈浣滅敤鍩�
 			// 閲嶅畾鍚戝悗浼氬甫涓妔tate鍙傛暟锛岄暱搴︿笉鍙秴杩�128涓瓧鑺�
 			builder.append("&state=").append(state);
-			builder.append("&agentid=").append(config.getAgentId()); // 琛ュ厖AgentID
+			//builder.append("&agentid=").append(config.getAgentId()); // 琛ュ厖AgentID锛堟墜鍔ㄦ巿鏉冩椂闇�瑕侊級
 			// 缁堢浣跨敤姝ゅ弬鏁板垽鏂槸鍚﹂渶瑕佸甫涓婅韩浠戒俊鎭�
 			builder.append("#wechat_redirect");
 			url = builder.toString();
@@ -435,4 +435,149 @@
         }
     }
 
+	//浼佷笟寰俊閫傞厤鎵嬪姩鎺堟潈鎺ュ彛璋冩暣
+	///**
+	// * 浼佷笟寰俊/閽夐拤 OAuth2鐧诲綍鍥炶皟
+	// *
+	// * @param code
+	// * @param state
+	// * @param response
+	// * @return
+	// */
+	//@ResponseBody
+	//@GetMapping("/oauth2/{source}/callback")
+	//public String oauth2LoginCallback(
+	//		@PathVariable("source") String source,
+	//		// 浼佷笟寰俊杩斿洖鐨刢ode
+	//		@RequestParam(value = "code", required = false) String code,
+	//		// 閽夐拤杩斿洖鐨刢ode
+	//		@RequestParam(value = "authCode", required = false) String authCode,
+	//		@RequestParam("state") String state,
+	//		@RequestParam(value = "is_reject", required = false) String isReject,
+	//		HttpServletResponse response) {
+	//	SysUser loginUser;
+	//	if (ThirdAppConfig.WECHAT_ENTERPRISE.equalsIgnoreCase(source)) {
+	//		log.info("銆愪紒涓氬井淇°�慜Auth2鐧诲綍杩涘叆callback锛歝ode=" + code + ", state=" + state);
+	//		// 1. 鍒ゅ畾鐢ㄦ埛鎷掔粷鎺堟潈鐨�3绉嶅満鏅細
+	//		//    - 鍦烘櫙1锛歩s_reject=true锛堜紒涓氬井淇℃槑纭爣璇嗘嫆缁濓級
+	//		//    - 鍦烘櫙2锛歝ode涓簄ull锛堟湭杩斿洖鏈夋晥鎺堟潈鍑瘉锛�
+	//		//    - 鍦烘櫙3锛歝ode瀛樺湪浣嗘棤鏁堬紙璋冪敤API澶辫触锛�
+	//		boolean isUserReject = "true".equals(isReject) || code == null;
+	//		if (isUserReject) {
+	//			log.info("鐢ㄦ埛鏄庣‘鎷掔粷浼佷笟寰俊鎺堟潈锛坕s_reject={}, code={}", isReject, code);
+	//			// 鏋勯�犲惈error=access_denied鐨勯噸瀹氬悜鍦板潃锛屽墠绔嵁姝よ瘑鍒�
+	//			String errorRedirect = buildErrorRedirect(state, "access_denied");
+	//			try {
+	//				response.sendRedirect(errorRedirect);
+	//				return "鐢ㄦ埛鎷掔粷鎺堟潈锛屽凡閲嶅畾鍚�";
+	//			} catch (IOException e) {
+	//				log.error("鎷掔粷鎺堟潈閲嶅畾鍚戝け璐�", e);
+	//				return "閲嶅畾鍚戝け璐�";
+	//			}
+	//		}
+	//
+	//		// 2. 灏濊瘯鐢╟ode鑾峰彇鐢ㄦ埛淇℃伅锛坈ode瀛樺湪浣嗗彲鑳芥棤鏁堬級
+	//		loginUser = thirdAppWechatEnterpriseService.oauth2Login(code);
+	//		if (loginUser == null) {
+	//			log.info("浼佷笟寰俊鎺堟潈澶辫触锛坈ode鏃犳晥锛�");
+	//			String errorRedirect = buildErrorRedirect(state, "invalid_code");
+	//			try {
+	//				response.sendRedirect(errorRedirect);
+	//				return "鎺堟潈澶辫触锛屽凡閲嶅畾鍚�";
+	//			} catch (IOException e) {
+	//				log.error("鎺堟潈澶辫触閲嶅畾鍚戝け璐�", e);
+	//				return "閲嶅畾鍚戝け璐�";
+	//			}
+	//		}
+	//		loginUser = thirdAppWechatEnterpriseService.oauth2Login(code);
+	//		if (loginUser == null) {
+	//			return "鐧诲綍澶辫触";
+	//		}
+	//	} else if (ThirdAppConfig.DINGTALK.equalsIgnoreCase(source)) {
+	//		log.info("銆愰拤閽夈�慜Auth2鐧诲綍杩涘叆callback锛歛uthCode=" + authCode + ", state=" + state);
+	//		loginUser = thirdAppDingtalkService.oauth2Login(authCode);
+	//		if (loginUser == null) {
+	//			return "鐧诲綍澶辫触";
+	//		}
+	//	} else {
+	//		return "涓嶆敮鎸佺殑source";
+	//	}
+	//	try {
+	//
+	//		//update-begin-author:taoyan date:2022-6-30 for: 宸ヤ綔娴佸彂閫佹秷鎭� 鐐瑰嚮娑堟伅閾炬帴璺宠浆鍔炵悊椤甸潰
+	//		String redirect = "";
+	//		if (state.indexOf("?") > 0) {
+	//			String[] arr = state.split("\\?");
+	//			state = arr[0];
+	//			if(arr.length>1){
+	//				redirect = arr[1];
+	//			}
+	//		}
+	//
+	//		String token = saveToken(loginUser);
+	//		// ============ 鏂板 Shiro 鐧诲綍閫昏緫 ============
+	//		JwtToken jwtToken = new JwtToken(token);
+	//		SecurityUtils.getSubject().login(jwtToken);
+	//		state += "/h5/oauth2-app/login?oauth2LoginToken=" + URLEncoder.encode(token, "UTF-8");
+	//		//update-begin---author:wangshuai ---date:20220613  for锛歔issues/I5BOUF]oauth2 閽夐拤鏃犳硶鐧诲綍------------
+	//		state += "&thirdType=" + source;
+	//		//state += "&thirdType=" + "wechat_enterprise";
+	//		if (redirect != null && redirect.length() > 0) {
+	//			state += "&" + redirect;
+	//		}
+	//		//update-end-author:taoyan date:2022-6-30 for: 宸ヤ綔娴佸彂閫佹秷鎭� 鐐瑰嚮娑堟伅閾炬帴璺宠浆鍔炵悊椤甸潰
+	//
+	//		//update-end---author:wangshuai ---date:20220613  for锛歔issues/I5BOUF]oauth2 閽夐拤鏃犳硶鐧诲綍------------
+	//		log.info("OAuth2鐧诲綍閲嶅畾鍚戝湴鍧�: " + state);
+	//		try {
+	//			response.sendRedirect(state);
+	//			return "ok";
+	//		} catch (IOException e) {
+	//			e.printStackTrace();
+	//			return "閲嶅畾鍚戝け璐�";
+	//		}
+	//	} catch (UnsupportedEncodingException e) {
+	//		e.printStackTrace();
+	//		return "瑙g爜澶辫触";
+	//	}
+	//}
+	//
+	///**
+	// * 鏋勯�犱紒涓氬井淇℃巿鏉冩嫆缁濇椂鐨勯敊璇噸瀹氬悜鍦板潃
+	// * 閫傞厤瑙勫垯锛歴tate鍙傛暟闀垮害鈮�128瀛楄妭锛屼繚鐣欏師濮嬩笟鍔″弬鏁帮紝闄勫姞error鏍囪瘑
+	// */
+	//private String buildErrorRedirect(String originalState, String errorCode) {
+	//	// 1. 鎷嗗垎鍘熷state涓殑鍩虹璺緞鍜屼笟鍔″弬鏁帮紙閬垮厤鐮村潖鍘熸湁state缁撴瀯锛�
+	//	String baseState = originalState;
+	//	String businessParams = "";
+	//	if (originalState.contains("?")) {
+	//		String[] stateParts = originalState.split("\\?", 2); // 鍙媶鍒嗘垚涓ら儴鍒�
+	//		baseState = stateParts[0]; // 鍩虹璺緞锛堝https://fastwoke.cn:8087锛�
+	//		businessParams = stateParts[1]; // 鍘熷涓氬姟鍙傛暟锛堝redirect=xxx锛�
+	//	}
+	//
+	//	// 2. 鏋勯�犻敊璇弬鏁帮紙error=xxx锛夛紝骞舵嫾鎺ュ師濮嬩笟鍔″弬鏁�
+	//	StringBuilder errorParams = new StringBuilder();
+	//	errorParams.append("error=").append(errorCode); // 鏍稿績閿欒鏍囪瘑
+	//	if (!businessParams.isEmpty()) {
+	//		errorParams.append("&").append(businessParams); // 闄勫姞鍘熷涓氬姟鍙傛暟
+	//	}
+	//
+	//	// 3. 鎷兼帴瀹屾暣鐨勯噸瀹氬悜鍦板潃锛堟牸寮忥細baseState/h5/oauth2-app/login?errorParams锛�
+	//	// 娉ㄦ剰锛氫紒涓氬井淇¤姹傞噸瀹氬悜鍦板潃闇�涓庢巿鏉冮摼鎺ヤ腑鐨剅edirect_uri鍩熷悕涓�鑷�
+	//	StringBuilder errorRedirect = new StringBuilder(baseState);
+	//	errorRedirect.append("/h5/oauth2-app/login?").append(errorParams);
+	//
+	//	// 4. 鏍¢獙state闀垮害锛堜紒涓氬井淇¢檺鍒垛墹128瀛楄妭锛夛紝瓒呴暱鏃舵埅鏂潪鍏抽敭鍙傛暟
+	//	String redirectUrl = errorRedirect.toString();
+	//	if (redirectUrl.getBytes().length > 128) {
+	//		log.warn("閿欒閲嶅畾鍚戝湴鍧�瓒呴暱锛屾埅鏂鐞�: {}", redirectUrl);
+	//		// 鍙繚鐣欏熀纭�璺緞鍜宔rror鍙傛暟锛岃垗寮冨叾浠栦笟鍔″弬鏁�
+	//		redirectUrl = baseState + "/h5/oauth2-app/login?error=" + errorCode;
+	//	}
+	//
+	//	log.info("浼佷笟寰俊鎷掔粷鎺堟潈閲嶅畾鍚戝湴鍧�: {}", redirectUrl);
+	//	return redirectUrl;
+	//}
+
 }
\ No newline at end of file

--
Gitblit v1.9.3