From ec2201278f9bd998d2c531c9cb9b5c2f57ebd00a Mon Sep 17 00:00:00 2001 From: root Date: Tue, 9 Sep 2025 12:59:32 +0900 Subject: [PATCH] =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=84=B1?= =?UTF-8?q?=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/site/ocr/prd/WebClientConfig.java | 3 -- .../ocr/prd/contorllers/LoginController.java | 13 +++++---- .../site/ocr/prd/dto/LoginRequestDto.java | 6 ++-- .../site/ocr/prd/dto/LoginResponseDto.java | 12 ++++---- .../site/ocr/prd/services/LoginService.java | 29 +++++++++++-------- 5 files changed, 33 insertions(+), 30 deletions(-) diff --git a/prd/src/main/java/site/ocr/prd/WebClientConfig.java b/prd/src/main/java/site/ocr/prd/WebClientConfig.java index 76b7c7d..be5a179 100644 --- a/prd/src/main/java/site/ocr/prd/WebClientConfig.java +++ b/prd/src/main/java/site/ocr/prd/WebClientConfig.java @@ -11,9 +11,6 @@ public class WebClientConfig { @Bean public WebClient webClient() { return WebClient.builder() - .defaultHeaders(httpHeaders -> { - httpHeaders.setContentType(MediaType.valueOf("application/x-www-form-urlencoded;charset=utf-8")); - }) .build(); } diff --git a/prd/src/main/java/site/ocr/prd/contorllers/LoginController.java b/prd/src/main/java/site/ocr/prd/contorllers/LoginController.java index fa47255..19899ad 100644 --- a/prd/src/main/java/site/ocr/prd/contorllers/LoginController.java +++ b/prd/src/main/java/site/ocr/prd/contorllers/LoginController.java @@ -24,12 +24,13 @@ public class LoginController { String accessToken = request.getParameter("code"); System.out.println(accessToken); LoginRequestDto requestDTO = new LoginRequestDto(); - requestDTO.setGrantType("authorization_code"); - requestDTO.setClientId("a1d6afef2d4508a10a498b7069f67496"); - requestDTO.setRedirectUri("http://localhost:9001/login/oauth-kakao-authorize"); + requestDTO.setGrant_type("authorization_code"); + requestDTO.setClient_id("a1d6afef2d4508a10a498b7069f67496"); + requestDTO.setRedirect_uri("http://localhost:9001/login/oauth-kakao-authorize"); requestDTO.setCode(accessToken); - loginService.getToken(requestDTO); + LoginResponseDto result = loginService.getToken(requestDTO); + System.out.println(result.toString()); } @@ -37,9 +38,9 @@ public class LoginController { public String kakaoLoginResponseDto(@RequestBody LoginResponseDto response) { //TODO: process POST request System.out.println("response :: "); - System.out.println(response.getAccessToken()); + System.out.println(response.getAccess_token()); - return response.getAccessToken(); + return response.getAccess_token(); } diff --git a/prd/src/main/java/site/ocr/prd/dto/LoginRequestDto.java b/prd/src/main/java/site/ocr/prd/dto/LoginRequestDto.java index c37e0c5..6221521 100644 --- a/prd/src/main/java/site/ocr/prd/dto/LoginRequestDto.java +++ b/prd/src/main/java/site/ocr/prd/dto/LoginRequestDto.java @@ -12,10 +12,10 @@ import lombok.ToString; public class LoginRequestDto { @JsonProperty("grant_type") - String grantType; //authorization_code + String grant_type; //authorization_code @JsonProperty("client_id") - String clientId; //앱 REST API 키 + String client_id; //앱 REST API 키 @JsonProperty("redirect_uri") - String redirectUri; //인가코드가 리다이렉트된 uri + String redirect_uri; //인가코드가 리다이렉트된 uri String code; //인가코드 요청으로 얻은 인가코드 } \ No newline at end of file diff --git a/prd/src/main/java/site/ocr/prd/dto/LoginResponseDto.java b/prd/src/main/java/site/ocr/prd/dto/LoginResponseDto.java index 118698a..8716807 100644 --- a/prd/src/main/java/site/ocr/prd/dto/LoginResponseDto.java +++ b/prd/src/main/java/site/ocr/prd/dto/LoginResponseDto.java @@ -12,16 +12,16 @@ import lombok.ToString; public class LoginResponseDto { @JsonProperty("token_type") - String tokenType; //토큰타입, bearer 고정 + String token_type; //토큰타입, bearer 고정 @JsonProperty("access_token") - String accessToken; //사용자 엑세스 토큰 값 + String access_token; //사용자 엑세스 토큰 값 @JsonProperty("id_token") - String idToken; //ID 토큰값, openID connect가 활성화된 경우만 발급 + String id_token; //ID 토큰값, openID connect가 활성화된 경우만 발급 @JsonProperty("expires_in") - Integer expiresIn; //엑세스토큰과 id토큰의 만료시간(초)) + Integer expires_in; //엑세스토큰과 id토큰의 만료시간(초)) @JsonProperty("refresh_token") - String refreshToken; //사용자 리프레시 토큰 값 + String refresh_token; //사용자 리프레시 토큰 값 @JsonProperty("refresh_token_expires_in") - Integer refreshTokenExpiresIn; //리프레시 토큰 만료 시간(초) + Integer refresh_token_expires_in; //리프레시 토큰 만료 시간(초) String scope; //인증된 사용자의 정보조회 범위, 여러개일 경우 공백으로 구분 } diff --git a/prd/src/main/java/site/ocr/prd/services/LoginService.java b/prd/src/main/java/site/ocr/prd/services/LoginService.java index b18e541..1ff6c50 100644 --- a/prd/src/main/java/site/ocr/prd/services/LoginService.java +++ b/prd/src/main/java/site/ocr/prd/services/LoginService.java @@ -1,8 +1,10 @@ package site.ocr.prd.services; +import org.springframework.http.MediaType; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.WebClient; +import org.springframework.http.HttpHeaders; import site.ocr.prd.dto.LoginRequestDto; import site.ocr.prd.dto.LoginResponseDto; @@ -16,17 +18,20 @@ public class LoginService { this.webClient = builder.build(); } - public String getToken(LoginRequestDto request) { - - System.out.println("요청 ::: " + request.toString()); - String result = webClient.post() - .uri("https://kauth.kakao.com/oauth/token/") - .bodyValue(request) - .retrieve() - //.bodyToMono(LoginResponseDto.class) - .bodyToMono(String.class) - .block(); - System.out.println("성공여부 ::: " + result); + public LoginResponseDto getToken(LoginRequestDto request) { + LoginResponseDto result = webClient.post() + .uri("https://kauth.kakao.com/oauth/token") + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE) + .body(BodyInserters.fromFormData("grant_type", "authorization_code") + .with("client_id", "a1d6afef2d4508a10a498b7069f67496") + .with("redirect_uri", "http://localhost:9001/login/oauth-kakao-authorize") + .with("code", request.getCode())) + .retrieve() + .bodyToMono(LoginResponseDto.class) + //.bodyToMono(String.class) + .block(); + //System.out.println("요청 ::: " + request.toString()); + //System.out.println("성공여부 ::: " + "result"); return result; }