카카오 로그인 시, 인가코드 관련 에러

문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.


앱 ID : 1085379

프론트는 next.js, 백엔드는 spring 을 사용했습니다.

KakaoTokenResponseDto kakaoTokenResponseDto = WebClient.create(KAUTH_TOKEN_URL_HOST).post()
.uri(uriBuilder → uriBuilder
.scheme(“https”)
.path(“/oauth/token”)
.queryParam(“grant_type”, “authorization_code”)
.queryParam(“client_id”, clientId)
.queryParam(“client_secret”, clientSecret)
.queryParam(“code”, code)
.queryParam(“redirect_uri”, “https://localhost:3000/login/oauth2/code/kakao”)
.build(true))
.header(HttpHeaders.CONTENT_TYPE, HttpHeaderValues.APPLICATION_X_WWW_FORM_URLENCODED.toString())
.retrieve()
.onStatus(HttpStatusCode::is4xxClientError, clientResponse → Mono.error(new RuntimeException(“400 Invalid Parameter”)))
.onStatus(HttpStatusCode::is5xxServerError, clientResponse → Mono.error(new RuntimeException(“500 Internal Server Error”)))
.bodyToMono(KakaoTokenResponseDto.class)
.block();

프론트로 부터 받은 인가코드를 통해 카카오 서버로 부터 토큰을 받아오는 과정을 담은 코드는 위와 같습니다.
로그인 진행은 되는데 다음의 에러가 발생합니다.

java.lang.RuntimeException: 400 Invalid Parameter
	at tig.server.kakao.service.KakaoService.lambda$getAccessTokenFromKakao$1(KakaoService.java:48) ~[classes!/:0.0.1-SNAPSHOT]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	*__checkpoint ⇢ 400 BAD_REQUEST from POST https://kauth.kakao.com/oauth/token [DefaultWebClient]

카카오 access token 도 발급이 되고 사용자 정보도 받아와 지는데 위와 같은 에러는 왜 뜰까요…?

또한 사용자 정보 받아온 이후 jwt 토큰을 response 에 담아서(쿠키에 담아서) 보내주는데 개발자 도구의 application 탭에서 확인이 안됩니다. 코드는 다음과 같습니다.

response.addHeader(HttpHeaders.SET_COOKIE, accessTokenCookie.toString());
response.addHeader(HttpHeaders.SET_COOKIE, refreshTokenCookie.toString());

response.addHeader(“Access-Control-Allow-Credentials”, “true”);
response.addHeader(“Access-Control-Expose-Headers”, “Set-Cookie”);
response.addHeader(“Access-Control-Expose-Headers”, “Authorization”);

액세스 토큰 발급을 매번 두번씩 호출해서 두번째 요청은 인가코드 만료로 에러 발생하고 있습니다.

코드 확인 부탁드려요.

혹시 어느 부분에서 두번씩 호출되는 것인지 알 수 있을까요?

로그만 보면 이렇습니다.

02:28:16.702 /oauth/authorize 인가코드요청
02:28:17.250 /oauth/token 토큰 발급 200
02:28:17.338 /oauth/token 토큰 발급 400

토큰발급간 시차를 보면 사람이 시도한 것은 아닌 것 같고 모든 요청에 항상 두번 요청하고 있습니다.

개발하신 시스템 디버깅해보시면 좋을 것 같습니다.