문의 시, 사용하시는 개발환경과 디벨로퍼스 앱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”);