앱 ID : 882482
안녕하세요~ 백엔드 개발자입니다.
Front에서 보내주는 authorizationCode로 백엔드에서 accessToken을 받아 처리하는 로직에서 400에러가 발생하여 확인하고자 질문 드립니다.
하기는 backend 로그에서 발생하는 에러 이며 최하단에 소스를 첨부하여 드립니다.
로그상에서 오류 파악에 어려움이 있어 서포트 부탁드리겠습니다.(로그와 소스의 * 는 의도적 마스킹입니다)
org.springframework.web.reactive.function.client.WebClientResponseException$BadRequest: 400 Bad Request from POST https://kauth.kakao.com/oauth/token?grant_type=authorization_code&client_id=2b87a8fac130b0d32824ea99c3cff012&redirect_uri=http://localhost:8888/oauth/callback/kakao&client_secret=********************************&code=**************************************************************************************
at org.springframework.web.reactive.function.client.WebClientResponseException.create(WebClientResponseException.java:217) ~[spring-webflux-5.3.25.jar:5.3.25]
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Error has been observed at the following site(s):
*__checkpoint ⇢ 400 from POST https://kauth.kakao.com/oauth/token [DefaultWebClient]
Original Stack Trace:
at org.springframework.web.reactive.function.client.WebClientResponseException.create(WebClientResponseException.java:217) ~[spring-webflux-5.3.25.jar:5.3.25]
at org.springframework.web.reactive.function.client.DefaultClientResponse.lambda$createException$1(DefaultClientResponse.java:207) ~[spring-webflux-5.3.25.jar:5.3.25]
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:106) ~[reactor-core-3.4.27.jar:3.4.27]
at reactor.core.publisher.FluxOnErrorReturn$ReturnSubscriber.onNext(FluxOnErrorReturn.java:162) ~[reactor-core-3.4.27.jar:3.4.27]
Backend의 소스는 다음과 같습니다.
// 카카오에 보낼 api
WebClient webClient = WebClient.builder()
.baseUrl("https://kauth.kakao.com")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.build();
// 카카오 서버에 요청 보내기 & 응답 받기
JSONObject response = webClient.post()
.uri(uriBuilder -> uriBuilder.path("/oauth/token")
.queryParam("grant_type", "authorization_code")
.queryParam("client_id", "********************************")
.queryParam("redirect_uri", "http://localhost:8888/oauth/callback/kakao")
.queryParam("client_secret", secretkey).queryParam("code", code).build())
.retrieve().bodyToMono(JSONObject.class).block();