카카오 로그인 401 Unauthorized: [no body]오류 초보 개발자입니다

앱 아이디는 1004455 입니다.

카카오 로그인을 구현하는 과정에서 getToken에서 오류가 발생합니다…
어디서 잘못되었는지 잘 모르겠습니다…

https://kauth.kakao.com/oauth/authorize?client_id=58fc709768dcd1b5dc6a4f72874b6e2b&redirect_uri=http://localhost:8080/api/user/kakao/callback&response_type=code
해당 링크를 들어가 보면 401 Unauthorized: [no body]라는 오류가 나오고
포스트맨으로 확인을 해보려고 하면
{
“msg”: “this access token does not exist”,
“code”: -401
}이런 문구와
Error: invalid_client, Description: Bad client credentials이런 오류가 발생하고 있습니다
토큰을 못 받아서 그런거 같기도한데

private String getToken(String code) throws JsonProcessingException {
// HTTP Header 생성
HttpHeaders headers = new HttpHeaders();
headers.add(“Content-type”, “application/x-www-form-urlencoded;charset=utf-8”);

    // HTTP Body 생성
    MultiValueMap<String, String> body = new LinkedMultiValueMap<>();
    body.add("grant_type", "authorization_code");
    body.add("client_id", kakaoClientId);
    body.add("client_secret", kakaoClientSecret);
    body.add("redirect_uri", kakaoRedirectUri);
    body.add("code", code);

    // HTTP 요청 보내기
    HttpEntity<MultiValueMap<String, String>> kakaoTokenRequest =
            new HttpEntity<>(body, headers);
    ResponseEntity<String> response = new RestTemplate().exchange(
            "https://kauth.kakao.com/oauth/token",
            HttpMethod.POST,
            kakaoTokenRequest,
            String.class
    );

    // HTTP 응답 (JSON) -> 액세스 토큰
    String responseBody = response.getBody();
    ObjectMapper objectMapper = new ObjectMapper();
    JsonNode jsonNode = objectMapper.readTree(responseBody);
    return jsonNode.get("access_token").asText();
}

혹시 잘못된 부분이 있을까요…?

절차로 보면
(1) kauth.kakao.com/oauth/authorize 에 인가코드 요청 하게되고 카카오 계정 로그인과 최초 로그인이라면 동의창이 표시됩니다.
(2) 인가코드요청에 파라메터로 설정한 리다이렉트 URI (localhost:8080/api/user/kakao/callback) 로 이동 후,
개발하신 시스템에서 액세스 토큰 발급 및 사용자 정보 조회 하게됩니다.


즉, “msg”: “this access token does not exist”,“code”: -401 에러는 액세스 토큰이 없다는 의미이므로 인가코드요청에서 발생하지 않고 리다이렉트 URI에서 액세스 토큰이 필요한 API 호출 시 발생하게됩니다.

  • 액세스 토큰 발급이 정상적으로 되었는지 로깅해보시고
  • 어떤 API 호출 시, 에러발생했는지 먼저 파악해보시면 좋을 것같습니다.

Bad client credentials 에러는 아래 내용 참고해주세요.

KOE010 (Bad client credentials) 에러가 발생할 때