기업 위챗 권한 수여 로그인 실례 코드 (취득 과정만)

- [] 구체적인 코드 프로세스는 다음과 같습니다.
여기에는 주로 놓인 코드 실현이다. 구체적인 사고방식 절차는 이 글에서 위챗 개발자 도구가 디버깅할 수 없는 문제 해결 방안에 대해 논문에서 이렇게 했다. 앞에서 로그인 페이지를 차단하고 사용자가 로그인 페이지를 방문할 때 앞에서 로그인 인터페이스를 차단한다.내 인터페이스에 방문하면 코드를 얻은 링크를 되돌려줍니다. 지금 업데이트합니다. 새로운 방법이 있습니다. 바로 전방 차단을 생략하는 방법입니다. 기업 위챗에서 코드를 얻는 링크 주소를 직접 설정하고 전방에서 코드를 가지고 백엔드login 인터페이스를 요청하면 권한을 부여받아 로그인할 수 있습니다. 이런 방법은 비교적 빠릅니다. 한 번 차단하면 페이지가 바뀌는 것과 같습니다.
//              
	@RequestMapping(value = "/qywxauth", method = RequestMethod.GET)
	public Result<String> qywxauth(HttpServletResponse response) throws Exception {
		//                        
		String reUrl = "http://oa.123.com";
		//        ,  
		String scopetype = "snsapi_privateinfo";
		//  code   
		String sUrl = qywxService.GET_CODE_URL;
		String wxurl = sUrl.replace("CORPID", corpId)
				.replace("REDIRECT_URI", reUrl).replace("SCOPE", scopetype)
				.replace("AGENTID", agentid);
		System.out.println(wxurl);
		return new Result<String>("v", "        ",wxurl);
	
	}

여기는 access 가져오기token 코드
public static Map<String, String> getAccessToken(String appid,
			String appsecret, String type) {
		Map<String, String> accessToken = null;
		String requestUrl = ACCESS_TOKEN_URL.replace("ID", appid).replace(
				"SECRET", appsecret);
		//  http            		
		String Obj = HttpClientUtil.httpGet(requestUrl, "UTF-8");
		JSONObject jsonObject = JSONObject.parseObject(Obj);
		//       
		if (null != jsonObject) {
			try {
				accessToken = new HashMap<String, String>();
				accessToken.put("token", jsonObject.getString("access_token"));
				accessToken
						.put("expiresin", jsonObject.getString("expires_in"));
			} catch (Exception e) {
				accessToken = null;
				//   token  
				System.out.println("  token   errcode:{"
						+ jsonObject.getIntValue("errcode") + "} errmsg:{"
						+ jsonObject.getString("errmsg") + "}");
			}
		}
		return accessToken;
	}

여기는 사용자userid, 즉 사용자 정보를 얻는 코드 블록입니다.
public String getUserInfo(String code) {

		String accessToken = getAccessToken(corpId, agentSecret, "app").get(
				"token");
		// 1.     url,             
		String get_userInfo_url = GET_USERINFO_URL.replace("ACCESS_TOKEN",
				accessToken).replace("CODE", code);
		// 2.    ,    ,      
		String Obj = HttpClientUtil.httpGet(get_userInfo_url, "UTF-8");
		JSONObject jsonObject = JSONObject.parseObject(Obj);
		System.out.println("jsonObject:" + jsonObject.toString());

		// 3.      
		if (null != jsonObject) {
			if (0 != jsonObject.getIntValue("errcode")) {
				return null;
			}
		}
		//jsonObject       userid,json fastjson;
		return jsonObject.getString("UserId");

	}

여기까지 기본적으로 이 세 가지 절차입니다. 다음은 제가 utils의 코드 블록을 붙이고 사이트 주소를 요청하는 코드도 몇 개 있습니다.
//    userinfo     ,  api   
public static final String GET_USERINFO_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE";
//  token   
public static final String ACCESS_TOKEN_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET";
//  code   
	public static final String GET_CODE_URL = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&agentid=AGENTID&state=STATE#wechat_redirect";


여기는 도구류 코드입니다.
//url    ,code     
public static String httpGet(String url,String code) {
		System.out.println("GetPage:"+url);
		String content = null;
		HttpClient httpClient = new HttpClient();
		//  header
		httpClient.getParams().setParameter(HttpMethodParams.USER_AGENT,"Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.2) Gecko/20090803 Fedora/3.5.2-2.fc11 Firefox/3.5.2");
		GetMethod method = new GetMethod(url);
		try {
			int statusCode = httpClient.executeMethod(method);
			System.out.println("httpClientUtils::statusCode="+statusCode);
			System.out.println(method.getStatusLine());
			content = new String(method.getResponseBody(), code);
			
		} catch (Exception e) {
			System.out.println("time out");
			e.printStackTrace();
		} finally {
			if(method!=null)method.releaseConnection();
			method = null;
			httpClient = null;
		}
		return content;
	}

좋은 웹페이지 즐겨찾기