From d9991a17e979a6d3d5b0b413b593ab6df199d80c Mon Sep 17 00:00:00 2001 From: Limwngur Date: Fri, 28 Jul 2023 18:53:58 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9A=BDFEAT=20#41:=20=EC=84=B1=EB=B3=84?= =?UTF-8?q?=20=EB=B0=8F=20=EB=82=98=EC=9D=B4=EB=8C=80=20=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DongnaeFriend/KakaoTokenController.java | 46 +++++++++++-------- .../umc/DongnaeFriend/domain/type/Age.java | 10 ++++ .../umc/DongnaeFriend/domain/type/Gender.java | 10 ++++ .../domain/user/service/UserService.java | 35 ++++---------- src/main/resources/application.yml | 4 +- src/main/resources/templates/html/index.html | 2 +- 6 files changed, 58 insertions(+), 49 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/KakaoTokenController.java b/src/main/java/com/umc/DongnaeFriend/KakaoTokenController.java index 4998903..d9668b9 100644 --- a/src/main/java/com/umc/DongnaeFriend/KakaoTokenController.java +++ b/src/main/java/com/umc/DongnaeFriend/KakaoTokenController.java @@ -44,36 +44,42 @@ public String kakologin(Model model, HttpServletResponse response) { @GetMapping("/callback") public String callback(Model model, @RequestParam("code") String code) throws IOException { - //------kakao POST 요청------ - String reqURL = "https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id=8427ba9114a5ecb09621710469748441&code=" + code; - URL url = new URL(reqURL); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setRequestMethod("POST"); + try { +//------kakao POST 요청------ + String reqURL = "https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id=1ad317e194df665ca44dcb82d11a7093&code=" + code; + URL url = new URL(reqURL); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("POST"); - BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); + BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); - String line = ""; - String result = ""; + String line = ""; + String result = ""; - while ((line = br.readLine()) != null) { - result += line; - } + while ((line = br.readLine()) != null) { + result += line; + } + + ObjectMapper objectMapper = new ObjectMapper(); + Map jsonMap = objectMapper.readValue(result, new TypeReference>() { + }); - ObjectMapper objectMapper = new ObjectMapper(); - Map jsonMap = objectMapper.readValue(result, new TypeReference>() { - }); + String accessToken = (String) jsonMap.get("access_token"); - String accessToken = (String) jsonMap.get("access_token"); + //-------------------------------------------------서버 로그인---------------------------------------------------- - //-------------------------------------------------서버 로그인---------------------------------------------------- + HashMap userInfo = kakaoService.getUserInfo(accessToken); + UserDto.Response response = userService.userValidation(userInfo); - HashMap userInfo = kakaoService.getUserInfo(accessToken); - UserDto.Response response = userService.userValidation(userInfo); + model.addAttribute("token","Bearer "+ response.getAccessToken()); - model.addAttribute("token","Bearer "+ response.getAccessToken()); + return "html/token"; + } catch (Exception e) { + e.printStackTrace(); + } + return null; - return "html/token"; } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java b/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java index 0228124..f88afbc 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java @@ -22,4 +22,14 @@ public enum Age { public String getAge() { return this.age; } + + public static Age fromString(String strAge) { + + for(Age age : Age.values()){ + if(age.getAge().equals(strAge)){ + return age; + } + } + throw new IllegalArgumentException("No matching type for [" + strAge + "]"); + } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/type/Gender.java b/src/main/java/com/umc/DongnaeFriend/domain/type/Gender.java index 64f11eb..816f5cf 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/type/Gender.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/type/Gender.java @@ -17,4 +17,14 @@ public enum Gender { public String getGender() { return this.gender; } + + public static Gender fromString(String strGender) { + + for(Gender gender : Gender.values()){ + if(gender.getGender().equals(strGender)){ + return gender; + } + } + throw new IllegalArgumentException("No matching type for [" + strGender + "]"); + } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/user/service/UserService.java b/src/main/java/com/umc/DongnaeFriend/domain/user/service/UserService.java index 40e600c..1aa3b78 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/user/service/UserService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/user/service/UserService.java @@ -60,22 +60,13 @@ public User userRegister(HashMap userInfo) { Long kakaoId = (Long) userInfo.get("id"); -// Optional gender = Optional.ofNullable(userInfo.get("gender").toString()); -// String strGender = ""; -// log.info("Gender : {}", gender.get()); -// if(gender.get()=="F"){ -// strGender="여성"; -// }else { -// strGender = "남성"; -// } -// log.info("strGender : {}", strGender); -// -// -// Optional age = Optional.ofNullable(userInfo.get("age").toString()); -// String[] ageRange = age.get().split("-"); -// -// -// // refreshToken userId를 claim 으로 생성 뒤, User의 필드에 넣고 User를 저장 + String strGender = userInfo.getOrDefault("gender", null).toString(); + String strAge = userInfo.getOrDefault("age", null).toString(); + + Gender gender = Gender.fromString(strGender); + Age age = Age.fromString(strAge); + + String refresh_Token = jwtTokenProvider.createRefreshToken((Long) userInfo.get("id")); return userRepository.save( @@ -85,16 +76,8 @@ public User userRegister(HashMap userInfo) { // // ) .email(email) - //TODO : Gender 결정[O] - .gender( -// Gender.valueOf(strGender) - Gender.MALE - ) - //TODO : Age 결정[O] - .age( -// Age.valueOf(ageRange[0]+"대") - Age.AGE20 - ) + .gender(gender) + .age(age) .townCert(YesNo.NO) .townCertCnt(0) .infoCert(YesNo.NO) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a2271fb..57b5933 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -7,9 +7,9 @@ logging: # Settings for local spring: datasource: - url: jdbc:mysql://localhost:3306/dongnae?characterEncoding=UTF-8&serverTimezone=UTC&useLegacyDatetimeCode=false + url: jdbc:mysql://localhost:3306/security?characterEncoding=UTF-8&serverTimezone=UTC&useLegacyDatetimeCode=false username: root - password: qwe335577! + password: Wngurdl1! driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate.ddl-auto: update diff --git a/src/main/resources/templates/html/index.html b/src/main/resources/templates/html/index.html index 26d4b25..39a3ed4 100644 --- a/src/main/resources/templates/html/index.html +++ b/src/main/resources/templates/html/index.html @@ -6,7 +6,7 @@

동네친구 카카오 로그인

- + kakoLogin From fa8f9f13f2c63f6864ff139584c3b8f0710250bd Mon Sep 17 00:00:00 2001 From: Limwngur Date: Sat, 29 Jul 2023 11:09:29 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=E2=9A=BDFeat=20#41:=20=EC=97=B0=EB=A0=B9?= =?UTF-8?q?=EB=8C=80=20=EB=B0=8F=20=EC=84=B1=EB=B3=84=20stringToEnum=20?= =?UTF-8?q?=EB=B3=80=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../umc/DongnaeFriend/domain/type/Age.java | 4 +- .../umc/DongnaeFriend/domain/type/Gender.java | 8 ++-- .../domain/user/service/KakaoServiceimpl.java | 5 ++- .../domain/user/service/UserService.java | 38 ++++++++++++++++++- 4 files changed, 47 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java b/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java index f88afbc..ddc50e3 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java @@ -26,10 +26,10 @@ public String getAge() { public static Age fromString(String strAge) { for(Age age : Age.values()){ - if(age.getAge().equals(strAge)){ + if((age.getAge().charAt(0))==(strAge.charAt(0))){ return age; } } - throw new IllegalArgumentException("No matching type for [" + strAge + "]"); + return null; } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/type/Gender.java b/src/main/java/com/umc/DongnaeFriend/domain/type/Gender.java index 816f5cf..e5f1c83 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/type/Gender.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/type/Gender.java @@ -3,9 +3,11 @@ import com.fasterxml.jackson.annotation.JsonValue; import lombok.Getter; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; @Getter @RequiredArgsConstructor +@Slf4j public enum Gender { MALE(0, "남성"), FEMALE(1, "여성"); @@ -21,10 +23,10 @@ public String getGender() { public static Gender fromString(String strGender) { for(Gender gender : Gender.values()){ - if(gender.getGender().equals(strGender)){ - return gender; + if(gender.toString().equalsIgnoreCase(strGender)){ + return strGender.equals("male")? Gender.MALE : Gender.FEMALE; } } - throw new IllegalArgumentException("No matching type for [" + strGender + "]"); + return null; } } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/user/service/KakaoServiceimpl.java b/src/main/java/com/umc/DongnaeFriend/domain/user/service/KakaoServiceimpl.java index 6c147f5..2d2114b 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/user/service/KakaoServiceimpl.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/user/service/KakaoServiceimpl.java @@ -68,12 +68,15 @@ public HashMap getUserInfo(String access_Token) throws IOExcepti String nickname = properties.get("nickname").toString(); String profileImage = properties.get("profile_image").toString(); String email = kakao_account.get("email").toString(); + String gender = kakao_account.get("gender").toString(); + String age = kakao_account.get("age_range").toString(); userInfo.put("id", id); userInfo.put("nickname", nickname); userInfo.put("profileImage", profileImage); userInfo.put("email", email); - + userInfo.put("age", age); + userInfo.put("gender", gender); return userInfo; } diff --git a/src/main/java/com/umc/DongnaeFriend/domain/user/service/UserService.java b/src/main/java/com/umc/DongnaeFriend/domain/user/service/UserService.java index 1aa3b78..85a6f40 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/user/service/UserService.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/user/service/UserService.java @@ -1,5 +1,6 @@ package com.umc.DongnaeFriend.domain.user.service; +import com.fasterxml.jackson.databind.ObjectMapper; import com.umc.DongnaeFriend.domain.type.Age; import com.umc.DongnaeFriend.domain.type.Gender; import com.umc.DongnaeFriend.domain.type.YesNo; @@ -14,6 +15,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.HashMap; import java.util.Optional; @@ -60,8 +65,8 @@ public User userRegister(HashMap userInfo) { Long kakaoId = (Long) userInfo.get("id"); - String strGender = userInfo.getOrDefault("gender", null).toString(); - String strAge = userInfo.getOrDefault("age", null).toString(); + String strGender = userInfo.getOrDefault("gender", "").toString(); + String strAge = userInfo.getOrDefault("age", "").toString(); Gender gender = Gender.fromString(strGender); Age age = Age.fromString(strAge); @@ -103,5 +108,34 @@ public String createAccessTokenFromRefreshToken(String refreshToken) { return accessToken; } + public String kakaoGetCode() { + + try { + String reqURL= "https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=1ad317e194df665ca44dcb82d11a7093&redirect_uri=http://localhost:8080/callback"; + + URL url = new URL(reqURL); + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("GET"); + + + BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); + + String line = ""; + String result = ""; + + while ((line = br.readLine()) != null) { + result += line; + } + + ObjectMapper objectMapper = new ObjectMapper(); + HashMap jsonMap = objectMapper.readValue(result, HashMap.class); + + log.info(jsonMap.toString()); + return ""; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } } From 8d8a44b5f6fe1cbabff428169174c243a5de9f02 Mon Sep 17 00:00:00 2001 From: Limwngur Date: Sat, 29 Jul 2023 11:26:18 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=E2=9A=BDRefactor=20#41:=20=EC=84=B1?= =?UTF-8?q?=EB=B3=84=20=EB=B0=8F=20=EC=97=B0=EB=A0=B9=EB=8C=80=EB=B3=80?= =?UTF-8?q?=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/umc/DongnaeFriend/domain/type/Age.java | 3 +++ .../DongnaeFriend/domain/user/service/KakaoServiceimpl.java | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java b/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java index ddc50e3..e55b91f 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/type/Age.java @@ -24,6 +24,9 @@ public String getAge() { } public static Age fromString(String strAge) { + if(strAge==""){ + return null; + } for(Age age : Age.values()){ if((age.getAge().charAt(0))==(strAge.charAt(0))){ diff --git a/src/main/java/com/umc/DongnaeFriend/domain/user/service/KakaoServiceimpl.java b/src/main/java/com/umc/DongnaeFriend/domain/user/service/KakaoServiceimpl.java index 2d2114b..047549b 100644 --- a/src/main/java/com/umc/DongnaeFriend/domain/user/service/KakaoServiceimpl.java +++ b/src/main/java/com/umc/DongnaeFriend/domain/user/service/KakaoServiceimpl.java @@ -68,8 +68,8 @@ public HashMap getUserInfo(String access_Token) throws IOExcepti String nickname = properties.get("nickname").toString(); String profileImage = properties.get("profile_image").toString(); String email = kakao_account.get("email").toString(); - String gender = kakao_account.get("gender").toString(); - String age = kakao_account.get("age_range").toString(); + String gender = kakao_account.getOrDefault("gender","").toString(); + String age = kakao_account.getOrDefault("age_range","").toString(); userInfo.put("id", id); userInfo.put("nickname", nickname);