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/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 ecf9e23..59114cf 100644 --- a/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java +++ b/src/main/java/com/example/oauthjwt/oauth2/api/OAuthLoginSuccessHandler.java @@ -1,6 +1,8 @@ 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.NaverUserInfo; import com.example.oauthjwt.common.dto.OAuth2UserInfo; import com.example.oauthjwt.oauth2.domain.entity.RefreshToken; import com.example.oauthjwt.user.domain.entity.User; @@ -60,6 +62,14 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo log.info("카카오 로그인 요청"); oAuth2UserInfo = new KakaoUserInfo(token.getPrincipal().getAttributes()); } + case "google" -> { + log.info("구글 로그인 요청"); + oAuth2UserInfo = new GoogleUserInfo(token.getPrincipal().getAttributes()); + } + case "naver" -> { + log.info("네이버 로그인 요청"); + oAuth2UserInfo = new NaverUserInfo(token.getPrincipal().getAttributes()); + } } // 정보 추출