diff --git a/src/main/java/codeview/main/auth/controller/OAuth2Controller.java b/src/main/java/codeview/main/auth/controller/OAuth2Controller.java index 9175c81..553a829 100644 --- a/src/main/java/codeview/main/auth/controller/OAuth2Controller.java +++ b/src/main/java/codeview/main/auth/controller/OAuth2Controller.java @@ -17,14 +17,13 @@ public String googleCallback(@AuthenticationPrincipal OAuth2User principal, Mode @GetMapping("/login/oauth2/code/github") public String githubCallback(@AuthenticationPrincipal OAuth2User principal, Model model) { - model.addAttribute("name", principal.getAttribute("name")); + model.addAttribute("name", principal.getAttribute("login")); return "home"; } -// @GetMapping("/login/oauth2/code/kakao") -// public String kakaoCallback(@AuthenticationPrincipal OAuth2User principal, Model model) { -// model.addAttribute("name", principal.getAttribute("nickname")); -// return "home"; -// } + @GetMapping("/login/oauth2/code/kakao") + public String kakaoCallback(@AuthenticationPrincipal OAuth2User principal, Model model) { + model.addAttribute("name", principal.getAttribute("nickname")); + return "home"; + } } - diff --git a/src/main/java/codeview/main/auth/dto/OAuth2UserInfo.java b/src/main/java/codeview/main/auth/dto/OAuth2UserInfo.java index fb1a365..b66deec 100644 --- a/src/main/java/codeview/main/auth/dto/OAuth2UserInfo.java +++ b/src/main/java/codeview/main/auth/dto/OAuth2UserInfo.java @@ -36,12 +36,11 @@ private static OAuth2UserInfo ofGoogle(Map attributes) { } private static OAuth2UserInfo ofKakao(Map attributes) { - Map account = (Map) attributes.get("kakao_account"); - Map profile = (Map) account.get("profile"); + Map kakaoAccount = (Map) attributes.get("kakao_account"); + Map profile = (Map) kakaoAccount.get("profile"); return OAuth2UserInfo.builder() .name((String) profile.get("nickname")) - .email((String) account.get("email")) .profile((String) profile.get("profile_image_url")) .build(); } @@ -57,7 +56,7 @@ private static OAuth2UserInfo ofGithub(Map attributes) { public Member toEntity() { return Member.builder() .name(name) - .email(email) + .email(email != null ? email : name + "@kakao.com") .profile(profile) .memberKey(KeyGenerator.generateKey()) .role(Member.Role.ROLE_USER) diff --git a/src/main/java/codeview/main/auth/service/CustomOAuth2UserService.java b/src/main/java/codeview/main/auth/service/CustomOAuth2UserService.java index a963a60..1386017 100644 --- a/src/main/java/codeview/main/auth/service/CustomOAuth2UserService.java +++ b/src/main/java/codeview/main/auth/service/CustomOAuth2UserService.java @@ -33,17 +33,11 @@ public OAuth2User loadUser(OAuth2UserRequest userRequest) throws OAuth2Authentic OAuth2UserInfo oAuth2UserInfo = OAuth2UserInfo.of(registrationId, oAuth2UserAttributes); - // 이메일이 없는 경우 처리 - Optional memberOptional = Optional.empty(); - if (oAuth2UserInfo.getEmail() != null) { - memberOptional = memberRepository.findByEmail(oAuth2UserInfo.getEmail()); - } - + Optional memberOptional = memberRepository.findByEmail(oAuth2UserInfo.getEmail()); Member member; if (memberOptional.isPresent()) { member = memberOptional.get(); } else { - // 이메일이 없거나 기존 회원이 아닌 경우 새로 저장 member = getOrSave(oAuth2UserInfo); } @@ -55,15 +49,9 @@ private Member getOrSave(OAuth2UserInfo oAuth2UserInfo) { member.setName(oAuth2UserInfo.getName()); member.setProfile(oAuth2UserInfo.getProfile()); - if (oAuth2UserInfo.getEmail() != null) { - member.setEmail(oAuth2UserInfo.getEmail()); - } else { - // 이메일이 없는 경우 다른 방법으로 식별자를 생성 (예: OAuth 제공자의 고유 ID 사용) - member.setEmail(oAuth2UserInfo.getName() + "@example.com"); - } + member.setEmail(oAuth2UserInfo.getName() + "@kakao.com"); member.setRole(Member.Role.ROLE_USER); - return memberRepository.save(member); } }