From 780cdb9e9e5d389e58ee956328d334733231b512 Mon Sep 17 00:00:00 2001 From: kimzini Date: Mon, 7 Oct 2024 17:34:23 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[feat]=20=EA=B5=AC=EA=B8=80=20=EC=86=8C?= =?UTF-8?q?=EC=85=9C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oauthjwt/common/dto/GoogleUserInfo.java | 28 +++++++++++++++++++ .../oauth2/api/OAuthLoginSuccessHandler.java | 5 ++++ 2 files changed, 33 insertions(+) create mode 100644 src/main/java/com/example/oauthjwt/common/dto/GoogleUserInfo.java diff --git a/src/main/java/com/example/oauthjwt/common/dto/GoogleUserInfo.java b/src/main/java/com/example/oauthjwt/common/dto/GoogleUserInfo.java new file mode 100644 index 0000000..16ff292 --- /dev/null +++ b/src/main/java/com/example/oauthjwt/common/dto/GoogleUserInfo.java @@ -0,0 +1,28 @@ +package com.example.oauthjwt.common.dto; + +import lombok.AllArgsConstructor; + +import java.util.Map; + +@AllArgsConstructor +public class GoogleUserInfo implements OAuth2UserInfo{ + + private Map attributes; + + @Override + public String getProviderId() { + // Google의 고유 ID는 sub 필드에 존재 + return attributes.get("sub").toString(); + } + + @Override + public String getProvider() { + return "google"; + } + + @Override + public String getName() { + // name 필드에서 사용자 이름 가져오기 + return attributes.get("name").toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java b/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java index a32d033..d0a2333 100644 --- a/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java +++ b/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java @@ -1,5 +1,6 @@ package com.example.oauthjwt.oauth2.api; +import com.example.oauthjwt.common.dto.GoogleUserInfo; import com.example.oauthjwt.common.dto.KakaoUserInfo; import com.example.oauthjwt.common.dto.OAuth2UserInfo; import com.example.oauthjwt.oauth2.domain.entity.RefreshToken; @@ -59,6 +60,10 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo log.info("카카오 로그인 요청"); oAuth2UserInfo = new KakaoUserInfo(token.getPrincipal().getAttributes()); } + case "google" -> { + log.info("구글 로그인 요청"); + oAuth2UserInfo = new GoogleUserInfo(token.getPrincipal().getAttributes()); + } } // 정보 추출 From 6056c4dd5fa4f645ae1c944b274eec95e31e325d Mon Sep 17 00:00:00 2001 From: kimzini Date: Mon, 7 Oct 2024 18:06:31 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[feat]=20=EB=84=A4=EC=9D=B4=EB=B2=84=20?= =?UTF-8?q?=EC=86=8C=EC=85=9C=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oauthjwt/common/dto/NaverUserInfo.java | 26 +++++++++++++++++++ .../oauth2/api/OAuthLoginSuccessHandler.java | 5 ++++ 2 files changed, 31 insertions(+) create mode 100644 src/main/java/com/example/oauthjwt/common/dto/NaverUserInfo.java diff --git a/src/main/java/com/example/oauthjwt/common/dto/NaverUserInfo.java b/src/main/java/com/example/oauthjwt/common/dto/NaverUserInfo.java new file mode 100644 index 0000000..6367bc8 --- /dev/null +++ b/src/main/java/com/example/oauthjwt/common/dto/NaverUserInfo.java @@ -0,0 +1,26 @@ +package com.example.oauthjwt.common.dto; + +import lombok.AllArgsConstructor; + +import java.util.Map; + +@AllArgsConstructor +public class NaverUserInfo implements OAuth2UserInfo{ + + private Map attributes; + + @Override + public String getProviderId() { + return attributes.get("id").toString(); + } + + @Override + public String getProvider() { + return "naver"; + } + + @Override + public String getName() { + return (String) ((Map) attributes.get("result")).get("nickname"); + } +} diff --git a/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java b/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java index d0a2333..14adcec 100644 --- a/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java +++ b/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java @@ -2,6 +2,7 @@ import com.example.oauthjwt.common.dto.GoogleUserInfo; import com.example.oauthjwt.common.dto.KakaoUserInfo; +import com.example.oauthjwt.common.dto.NaverUserInfo; import com.example.oauthjwt.common.dto.OAuth2UserInfo; import com.example.oauthjwt.oauth2.domain.entity.RefreshToken; import com.example.oauthjwt.user.domain.entity.User; @@ -64,6 +65,10 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo log.info("구글 로그인 요청"); oAuth2UserInfo = new GoogleUserInfo(token.getPrincipal().getAttributes()); } + case "naver" -> { + log.info("네이버 로그인 요청"); + oAuth2UserInfo = new NaverUserInfo(token.getPrincipal().getAttributes()); + } } // 정보 추출