Skip to content

Commit 64f72e0

Browse files
authored
Merge pull request #92 from cake-way/dev
fix: 프론트 로컬 전용 콜백 구현
2 parents cf1d7e0 + 36f44ef commit 64f72e0

2 files changed

Lines changed: 37 additions & 0 deletions

File tree

src/main/java/com/example/cake_way/member/controller/KakaoLoginController.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,17 @@ public ResponseEntity<?> callback(@RequestParam("code") String code) throws IOEx
3535
return ResponseEntity.ok(loginResponseDto);
3636
}
3737

38+
@GetMapping("/kakao/callback2")
39+
public ResponseEntity<?> callback2(@RequestParam("code") String code) throws IOException {
40+
String accessToken = kakaoService.getKakaoAccessToken2(code);
41+
42+
KakaoUserInfoResponseDto userInfo = kakaoService.getUserInfo(accessToken);
43+
44+
LoginResponseDto loginResponseDto = memberService.login(userInfo);
45+
46+
return ResponseEntity.ok(loginResponseDto);
47+
}
48+
3849
@Value("${CLIENT_ID}")
3950
private String client_id;
4051

src/main/java/com/example/cake_way/member/service/KakaoService.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,4 +95,30 @@ public void getKakaoCode() {
9595

9696

9797
}
98+
99+
public String getKakaoAccessToken2(String code) {
100+
101+
KakaoTokenResponseDto kakaoTokenResponseDto = WebClient.create(KAUTH_TOKEN_URL_HOST).post()
102+
.uri(uriBuilder -> uriBuilder
103+
.scheme("https")
104+
.path("/oauth/token")
105+
.queryParam("grant_type", "authorization_code")
106+
.queryParam("client_id", clientId)
107+
.queryParam("code", code)
108+
.queryParam("redirect_uri", "https://cake-wayy.com/login/callback") // 나중에 프론트로 바꿔주기
109+
.build(true))
110+
.header(HttpHeaders.CONTENT_TYPE, HttpHeaderValues.APPLICATION_X_WWW_FORM_URLENCODED.toString())
111+
.retrieve()
112+
.onStatus(HttpStatusCode::is4xxClientError, clientResponse -> Mono.error(new RuntimeException("Invalid Parameter")))
113+
.onStatus(HttpStatusCode::is5xxServerError, clientResponse -> Mono.error(new RuntimeException("Internal Server Error")))
114+
.bodyToMono(KakaoTokenResponseDto.class)
115+
.block();
116+
117+
118+
log.info(" [Kakao Service] Access Token ------> {}", kakaoTokenResponseDto.getAccessToken());
119+
log.info(" [Kakao Service] Refresh Token ------> {}", kakaoTokenResponseDto.getRefreshToken());
120+
log.info(" [Kakao Service] Scope ------> {}", kakaoTokenResponseDto.getScope());
121+
122+
return kakaoTokenResponseDto.getAccessToken();
123+
}
98124
}

0 commit comments

Comments
 (0)