From 26d474cfbe5a6f39368a57e35d4aac3ec7a9c7ae Mon Sep 17 00:00:00 2001 From: 1223v <1223v@naver.com> Date: Tue, 27 Feb 2024 15:53:20 +0900 Subject: [PATCH] =?UTF-8?q?FeatP:=20=EC=95=A0=ED=94=8C=20oauth=20=EB=A1=9C?= =?UTF-8?q?=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 --- .../readyverydemo/config/OauthConfig.java | 13 ++++++ .../readyverydemo/domain/SocialType.java | 2 +- .../security/oauth2/OAuthAttributes.java | 11 +++++ .../service/CustomOAuth2UserService.java | 8 ++-- .../oauth2/userinfo/AppleOAuth2UserInfo.java | 45 +++++++++++++++++++ 5 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/readyvery/readyverydemo/config/OauthConfig.java create mode 100644 src/main/java/com/readyvery/readyverydemo/security/oauth2/userinfo/AppleOAuth2UserInfo.java diff --git a/src/main/java/com/readyvery/readyverydemo/config/OauthConfig.java b/src/main/java/com/readyvery/readyverydemo/config/OauthConfig.java new file mode 100644 index 0000000..ac6e4fe --- /dev/null +++ b/src/main/java/com/readyvery/readyverydemo/config/OauthConfig.java @@ -0,0 +1,13 @@ +package com.readyvery.readyverydemo.config; + +import org.springframework.context.annotation.Configuration; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Configuration +public class OauthConfig { + public static final String KAKAO_NAME = "kakao"; + public static final String APPLE_NAME = "apple"; + public static final String GOOGLE_NAME = "google"; +} diff --git a/src/main/java/com/readyvery/readyverydemo/domain/SocialType.java b/src/main/java/com/readyvery/readyverydemo/domain/SocialType.java index 4273104..d0219d2 100644 --- a/src/main/java/com/readyvery/readyverydemo/domain/SocialType.java +++ b/src/main/java/com/readyvery/readyverydemo/domain/SocialType.java @@ -1,6 +1,6 @@ package com.readyvery.readyverydemo.domain; public enum SocialType { - KAKAO, NAVER, GOOGLE + KAKAO, NAVER, GOOGLE, APPLE } diff --git a/src/main/java/com/readyvery/readyverydemo/security/oauth2/OAuthAttributes.java b/src/main/java/com/readyvery/readyverydemo/security/oauth2/OAuthAttributes.java index f3e6e49..bef2887 100644 --- a/src/main/java/com/readyvery/readyverydemo/security/oauth2/OAuthAttributes.java +++ b/src/main/java/com/readyvery/readyverydemo/security/oauth2/OAuthAttributes.java @@ -5,6 +5,7 @@ import com.readyvery.readyverydemo.domain.Role; import com.readyvery.readyverydemo.domain.SocialType; import com.readyvery.readyverydemo.domain.UserInfo; +import com.readyvery.readyverydemo.security.oauth2.userinfo.AppleOAuth2UserInfo; import com.readyvery.readyverydemo.security.oauth2.userinfo.GoogleOAuth2UserInfo; import com.readyvery.readyverydemo.security.oauth2.userinfo.KakaoOAuth2UserInfo; import com.readyvery.readyverydemo.security.oauth2.userinfo.OAuth2UserInfo; @@ -40,6 +41,9 @@ public static OAuthAttributes of(SocialType socialType, if (socialType == SocialType.KAKAO) { return ofKakao(userNameAttributeName, attributes); } + if (socialType == SocialType.APPLE) { + return ofApple(userNameAttributeName, attributes); + } return ofGoogle(userNameAttributeName, attributes); } @@ -58,6 +62,13 @@ public static OAuthAttributes ofGoogle(String userNameAttributeName, Map attributes) { + return OAuthAttributes.builder() + .nameAttributeKey(userNameAttributeName) + .oauth2UserInfo(new AppleOAuth2UserInfo(attributes)) + .build(); + } + /** * of메소드로 OAuthAttributes 객체가 생성되어, 유저 정보들이 담긴 OAuth2UserInfo가 소셜 타입별로 주입된 상태 * OAuth2UserInfo에서 socialId(식별값), nickname, imageUrl을 가져와서 build diff --git a/src/main/java/com/readyvery/readyverydemo/security/oauth2/service/CustomOAuth2UserService.java b/src/main/java/com/readyvery/readyverydemo/security/oauth2/service/CustomOAuth2UserService.java index 4c6e91a..89d5fa7 100644 --- a/src/main/java/com/readyvery/readyverydemo/security/oauth2/service/CustomOAuth2UserService.java +++ b/src/main/java/com/readyvery/readyverydemo/security/oauth2/service/CustomOAuth2UserService.java @@ -1,5 +1,7 @@ package com.readyvery.readyverydemo.security.oauth2.service; +import static com.readyvery.readyverydemo.config.OauthConfig.*; + import java.util.Collections; import java.util.Map; @@ -27,8 +29,6 @@ public class CustomOAuth2UserService implements OAuth2UserService attributes) { + super(attributes); + } + + @Override + public String getId() { + return (String)attributes.get("sub"); + } + + @Override + public String getNickName() { + return (String)attributes.get("name"); + } + + @Override + public String getEmail() { + return (String)attributes.get("email"); + } + + @Override + public String getImageUrl() { + return (String)attributes.get("picture"); + } + + @Override + public String getPhoneNumber() { + return "readyvery"; + } + + @Override + public String getBirth() { + return "readyvery"; + } + + @Override + public String getAge() { + return "readyvery"; + } +}