위챗 페이지 권한 부여 코드가 여러 번 리셋을 요청하는 구덩이

이전 프로젝트에서 위챗 권한을 부여받아야 했는데 저도 처음 사용했습니다. 위챗 개발 문서를 보고 썼는데 구덩이에 빠졌습니다.
권한 부여 페이지에서 처음 쓰기 시작한 위챗 권한 부여 링크:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx5250b8b9d4cfdf76&redirect_uri=(code를 업무 controller로 직접 리셋) &responsetype=code&scope=snsapi_userinfo&state=state#wechat_redirect';
제가 직접 테스트를 했을 때 전혀 문제가 없었어요. 그리고 동료를 불러서 같이 테스트를 했는데 문제가 생겼어요...그때 그건 멍청한 얼굴이었어...
내가 가서 위챗 개발 문서를 잘 봤는데 쓸모 있는 소식을 찾지 못했어...인터넷에 검색해 봤는데 코드 요청이 여러 번 되돌아온다고...원격 debug를 켜고 몇 바퀴 돌았는데 정말 잠깐이었어요. 코드로 오픈아이드 쪽에서 잘못 보고했어요. 이렇게 해서 제가 받은 업무 코드를 실행할 수가 없어요.
 
//=====================아래 코드는 보지 않아도 됩니다===============================
멱을 만들면 돼요.
 
===============================================================================
 
 
 
그리고 코드를 다시 개조하기 시작했습니다. 진정한 업무 컨트롤러에 도착하기 전에 중간 컨트롤러(이것은 리셋된 코드를 얻고 오픈 Id를 가져오는 것)를 먼저 가다가 진정한 업무 컨트롤러로 방향을 바꾸었습니다.
 


수정된 코드
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx5250b8b9d4cfdf76&redirect_uri=(code를 중간 controller로 직접 리셋) &responsetype=code&scope=snsapi_userinfo&state=state#wechat_redirect';
중간 컨트롤러
@RequestMapping("xxxxx")
	public void accreditBack(String data, Model model,HttpServletRequest request,HttpServletResponse response) throws Exception{
		String code = request.getParameter("code");
		String publishId = request.getParameter("state");
		String contextPath = request.getContextPath();//     
	
		String url=contextPath+"/xxxx";
		if(!StringUtils.isEmpty(code)){
			WxCommoneUtils wxCommoneUtils =new WxCommoneUtils();
			//String openId = wxCommoneUtils.getOpenId(code);
			JSONObject wxUserInfo = wxCommoneUtils.getWxUserInfo(code);
			String openId = wxUserInfo.getString("openid");
			String headImgUrl = wxUserInfo.getString("headimgurl");//     
//			BASE64Encoder be =new  BASE64Encoder();
//			String encode = be.encode(headImgUrl.getBytes());
//			String string = encode.replaceAll(" ", "");
			url=url+"?"openId="+openId+"&headImgUrl="+headImgUrl;
			
		}
		response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);  
		response.setHeader("Location",url);
		 //    
		response.setHeader( "Connection", "close" );
		response.setHeader( "Pragma", "no-cache" );
		response.addHeader( "Cache-Control", "must-revalidate" );
		response.addHeader( "Cache-Control", "no-cache" );
		response.addHeader( "Cache-Control", "no-store" );
		response.setDateHeader("Expires", 0);
	}

진정한 업무 컨트롤러@RequestMapping(value="xxxxxxxx") public String fxDetails( String openId, String headImgUrl,Model model,HttpSession session,HttpServletResponse response) throws IOException { return "xxxxxxx"; } return "xxxxxxx";
}
 
 

좋은 웹페이지 즐겨찾기