Spring Boot + feignClient로 카카오 로그인 구현중 에러가 발생했습니다

@FeignClient(name = “kakaoClient”, configuration = KakaoFeignConfiguration.class)
public interface KakaoClient {

@PostMapping
KakaoInfo getInfo(URI baseUrl, @RequestHeader("Authorization") String accessToken);

@PostMapping
KakaoToken getToken(URI baseUrl, @RequestParam("client_id") String restApiKey,
                    @RequestParam("redirect_uri") String redirectUrl,
                    @RequestParam("code") String code,
                    @RequestParam("grant_type") String grantType);

}

getToken 메서드는 accessToken같은 Token값은 잘 들어옵니다.

public KakaoInfo getInfo(final String code) {
final KakaoToken token = getToken(code);
log.debug(“token = {}”, token);
try {
return client.getInfo(new URI(kakaoUserApiUrl), token.getTokenType() + " " + token.getAccessToken());
} catch (Exception e) {
log.error(“something error…”, e);
return KakaoInfo.fail();
}
}

token값을 이용하여 kakaoService.getInfo(code)를 실행시키면 유저 정보가 아닌 에러와 null값이 들어옵니다.

에러 정보 : [400 Bad Request] during [POST] to [https://kauth.kakao.com/oauth/token?client_id=6256a

“error_code”:“KOE320”}]

유저정보를 요청하는 부분인
return client.getInfo(new URI(kakaoUserApiUrl), token.getTokenType() + " " + token.getAccessToken()); 코드와 매개변수는 문제없이 잘 들어갑니다. 제가 놓친것이 있을까요?

안녕하세요.

접근토큰 발급은 application/x-www-form-urlencoded 형식으로 전송되어야 합니다.

답글주셔서 감사합니다
woody님께서 말씀하신 application/x-www-form-urlencoded 형식으로 코드 변경해서 실행했을때
[400 Bad Request] during [POST] 에러는 해결됐지만 여전히 유저정보가 null값으로 들어옵니다.

token = KakaoToken(tokenType=bearer, accessToken=akSUxxxxxxxxxxxxxxK-75TxMV4FSoPbdCj1zGAAAAYgnlLPa, refreshToken=bIyMLnNxxxxxxxxxxCj1zGAAAAYgnlLPZ, expiresIn=21599, refreshTokenExpiresIn=5183999)
2023-05-17 11:40:36.887 DEBUG 182387 — [nio-8080-exec-7] o.s.w.c.HttpMessageConverterExtractor : Reading to [com.xxxx.login.dto.KakaoInfo]
2023-05-17 11:40:36.889 DEBUG 182387 — [nio-8080-exec-7] c.b.m.login.service.KakaoService : getInfo
2023-05-17 11:40:36.898 DEBUG 182387 — [nio-8080-exec-7] o.s.w.c.HttpMessageConverterExtractor : Reading to [com.xxxx.login.dto.KakaoInfo]
2023-05-17 11:40:36.899 DEBUG 182387 — [nio-8080-exec-7] c.b.m.login.controller.KakaoController : test = KakaoInfo(kakaoAccount=null)

아래는 feign client 인터페이스와, getInfo 구현 코드입니다.

@FeignClient(name = "kakaoClient", configuration = KakaoFeignConfiguration.class)
public interface KakaoClient {

    @PostMapping(consumes = "application/x-www-form-urlencoded", produces = "application/json")
    KakaoInfo getInfo(URI baseUrl, @RequestHeader("Authorization") String accessToken);

    @PostMapping
    KakaoToken getToken(URI baseUrl, @RequestParam("client_id") String restApiKey,
                        @RequestParam("redirect_uri") String redirectUrl,
                        @RequestParam("code") String code,
                        @RequestParam("grant_type") String grantType);

}
public KakaoInfo getInfo(final String code) {
        final KakaoToken token = getToken(code);
        log.debug("token = {}", token);
        try {
            log.debug("getInfo", client.getInfo(new URI(kakaoUserApiUrl), token.getTokenType() + " " + token.getAccessToken()));
            return client.getInfo(new URI(kakaoUserApiUrl), token.getTokenType() + " " + token.getAccessToken());
        } catch (Exception e) {
            log.error("something error..", e);
            return KakaoInfo.fail();
        }
    }

getInfo메서드의 return client.getInfo(new URI(kakaoUserApiUrl), token.getTokenType() + " " + token.getAccessToken()); 부분에 매개변수는 정상적인 값이 들어갑니다.

카카오 developer에서 사이트 도메인 또한 정확히 작성했는데 null값이 돌아오는 이유를 모르겠습니다.

제가 실수 하고 있는점을 알려주시면 감사하겠습니다.