From cb7f468d957d6cc99dccfb42be55590dbff721f5 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 22 Dec 2025 23:21:00 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=EA=B0=80=EC=A0=B8=EC=98=A4=EA=B8=B0=20=EC=84=B1=EA=B3=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prd/.gitignore | 2 +- .../ocr/prd/contorllers/LoginController.java | 5 +++ .../java/site/ocr/prd/dto/LoginReqDTO.java | 3 ++ .../java/site/ocr/prd/dto/LoginResDTO.java | 8 ++++- .../site/ocr/prd/dto/UserInfoInqyReqDTO.java | 11 ++----- .../site/ocr/prd/dto/UserInfoInqyResDTO.java | 20 ----------- .../site/ocr/prd/services/LoginService.java | 33 ++++++++++++++++++- 7 files changed, 50 insertions(+), 32 deletions(-) diff --git a/prd/.gitignore b/prd/.gitignore index c2065bc..472444d 100644 --- a/prd/.gitignore +++ b/prd/.gitignore @@ -34,4 +34,4 @@ out/ /.nb-gradle/ ### VS Code ### -.vscode/ +.vscode/* 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 8261e84..2d0d1ff 100644 --- a/prd/src/main/java/site/ocr/prd/contorllers/LoginController.java +++ b/prd/src/main/java/site/ocr/prd/contorllers/LoginController.java @@ -9,6 +9,7 @@ import jakarta.servlet.http.HttpServletRequest; import site.ocr.prd.dto.LoginReqDTO; import site.ocr.prd.dto.LoginResDTO; import site.ocr.prd.dto.UserInfoInqyReqDTO; +import site.ocr.prd.dto.UserInfoInqyResDTO; import site.ocr.prd.services.LoginService; @@ -53,6 +54,10 @@ public class LoginController { UserInfoInqyReqDTO userInfoInqyRequest = new UserInfoInqyReqDTO(); userInfoInqyRequest.setAccess_token(loginResult.getAccess_token()); + UserInfoInqyResDTO userInfoInqyResponse = loginService.getUserInfo(userInfoInqyRequest); + System.out.println("사용자정보 :: " + userInfoInqyResponse.toString()); + + } diff --git a/prd/src/main/java/site/ocr/prd/dto/LoginReqDTO.java b/prd/src/main/java/site/ocr/prd/dto/LoginReqDTO.java index 257943a..82b010f 100644 --- a/prd/src/main/java/site/ocr/prd/dto/LoginReqDTO.java +++ b/prd/src/main/java/site/ocr/prd/dto/LoginReqDTO.java @@ -13,10 +13,13 @@ public class LoginReqDTO { @JsonProperty("grant_type") String grant_type; //authorization_code + @JsonProperty("client_id") String client_id; //앱 REST API 키 + @JsonProperty("redirect_uri") String redirect_uri; //인가코드가 리다이렉트된 uri + @JsonProperty("code") String code; //인가코드 요청으로 얻은 인가코드 } \ No newline at end of file diff --git a/prd/src/main/java/site/ocr/prd/dto/LoginResDTO.java b/prd/src/main/java/site/ocr/prd/dto/LoginResDTO.java index 8716807..b2f7091 100644 --- a/prd/src/main/java/site/ocr/prd/dto/LoginResDTO.java +++ b/prd/src/main/java/site/ocr/prd/dto/LoginResDTO.java @@ -9,19 +9,25 @@ import lombok.ToString; @ToString @Getter @Setter -public class LoginResponseDto { +public class LoginResDTO { @JsonProperty("token_type") String token_type; //토큰타입, bearer 고정 + @JsonProperty("access_token") String access_token; //사용자 엑세스 토큰 값 + @JsonProperty("id_token") String id_token; //ID 토큰값, openID connect가 활성화된 경우만 발급 + @JsonProperty("expires_in") Integer expires_in; //엑세스토큰과 id토큰의 만료시간(초)) + @JsonProperty("refresh_token") String refresh_token; //사용자 리프레시 토큰 값 + @JsonProperty("refresh_token_expires_in") Integer refresh_token_expires_in; //리프레시 토큰 만료 시간(초) + String scope; //인증된 사용자의 정보조회 범위, 여러개일 경우 공백으로 구분 } diff --git a/prd/src/main/java/site/ocr/prd/dto/UserInfoInqyReqDTO.java b/prd/src/main/java/site/ocr/prd/dto/UserInfoInqyReqDTO.java index 6b8a194..1447edc 100644 --- a/prd/src/main/java/site/ocr/prd/dto/UserInfoInqyReqDTO.java +++ b/prd/src/main/java/site/ocr/prd/dto/UserInfoInqyReqDTO.java @@ -11,13 +11,6 @@ import lombok.ToString; @Setter public class UserInfoInqyReqDTO { - class Request { - @JsonProperty("access_token") - String access_token; - } - - class Properties { - - } - + @JsonProperty("access_token") + String access_token; } diff --git a/prd/src/main/java/site/ocr/prd/dto/UserInfoInqyResDTO.java b/prd/src/main/java/site/ocr/prd/dto/UserInfoInqyResDTO.java index bc58d65..f454651 100644 --- a/prd/src/main/java/site/ocr/prd/dto/UserInfoInqyResDTO.java +++ b/prd/src/main/java/site/ocr/prd/dto/UserInfoInqyResDTO.java @@ -1,7 +1,5 @@ package site.ocr.prd.dto; -import com.fasterxml.jackson.annotation.JsonProperty; - import lombok.Getter; import lombok.Setter; import lombok.ToString; @@ -10,28 +8,10 @@ import lombok.ToString; @Getter @Setter public class UserInfoInqyResDTO { - - class Response { - @JsonProperty("id") String id; - - @JsonProperty("properties") - KakaoAccount account; - - - } - - class KakaoAccount { - PropertiesKeys keys; - - } - - class PropertiesKeys { - String profile; String name; String email; String age_range; String birthday; String gender; - } } \ No newline at end of file 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 45e3394..84fdd69 100644 --- a/prd/src/main/java/site/ocr/prd/services/LoginService.java +++ b/prd/src/main/java/site/ocr/prd/services/LoginService.java @@ -1,13 +1,19 @@ package site.ocr.prd.services; +import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.BodyInserters; import org.springframework.web.reactive.function.client.WebClient; -import org.springframework.http.HttpHeaders; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import site.ocr.prd.dto.LoginReqDTO; import site.ocr.prd.dto.LoginResDTO; +import site.ocr.prd.dto.UserInfoInqyReqDTO; +import site.ocr.prd.dto.UserInfoInqyResDTO; @Service public class LoginService { @@ -34,5 +40,30 @@ public class LoginService { return result; } + public UserInfoInqyResDTO getUserInfo(UserInfoInqyReqDTO request) { + + // 응답 DTO + UserInfoInqyResDTO result = new UserInfoInqyResDTO(); + + JsonNode root = webClient.get() + .uri("https://kapi.kakao.com/v2/user/me") + .header(HttpHeaders.AUTHORIZATION, "Bearer " + request.getAccess_token()) + .retrieve() + .bodyToMono(JsonNode.class) + .block(); + + //사용자ID + String id = root.path("id").asText(); + String name = root.path("name").asText(); + String email = root.path("email").asText(); + //jsonnode :: {"id":4438121341,"connected_at":"2025-09-09T03:53:23Z"} + System.out.println("jsonnode :: " + root.toString()); + result.setId(id); + result.setName(name); + result.setEmail(email); + + return result; + } + } \ No newline at end of file