카카오로그인 토큰 발급 시 400 에러 발생

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


앱 ID: 1012404

안녕하세요. 스프링 사용 없이 자바와 자바스크립트, json simple을 이용해 로그인을 구현하고 있습니다.
이 과정에서 아래처럼 토큰을 요청하고 있는데, 서블릿에 추가한 reqest.getParameter("code");에서 null이 출력되고, responseCode에서 400 출력과 함꼐 java.io.IOException: Server returned HTTP response code: 400 for URL: https://kauth.kakao.com/oauth/token 에러가 발생합니다. 어디에서 잘못된 건지 모르겠습니다.

HttpURLConnection urlCon = (HttpURLConnection) url.openConnection();
			urlCon.setRequestMethod("POST");
			urlCon.setDoOutput(true);
			urlCon.setRequestProperty("Authorization", "Bearer " + access_Token);

			BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(urlCon.getOutputStream()));
				StringBuilder sb = new StringBuilder();
				sb.append("grant_type=authorization_code");
				sb.append("&client_id=REST KEY");
				sb.append("&redirect_uri=http://localhost:8081/StudyMatch/board/MainPage.jsp");
				sb.append("&code=" + authorize_code);
				bw.write(sb.toString());
				bw.flush();

				int responseCode = urlCon.getResponseCode();
				System.out.println("responseCode: " + responseCode);

			BufferedReader br = new BufferedReader(new InputStreamReader(urlCon.getInputStream()));
			String line = "";
			String result = "";

				while ((line = br.readLine()) != null) {
					result += line;
				}
				System.out.println("Kakao API 응답: " + result);

안녕하세요.

인가코드 정상 전달 되었지만, 토큰 발급 시 null이 전달되어 유효하지 않은 인가코드 사용을 의미하는 KOE320 오류가 발생하였습니다.

카카오측 로그를 보면 전달된 인가코드로 접근 토큰을 정상 발급 받은 뒤 0.2초 내로 null 값을 사용하여 재차 접근토큰 발급을 하고 있는 것이 확인됩니다.

만약, 프론트에서 인가코드를 백엔드로 다시 전달하는 구조라면 프론트측 코드를 점검부탁드리며, redirect_uri 가 백엔드 주소라면 요청이 2번 처리되지는 않는지 점검 부탁드립니다.

답변 감사합니다. 프론트에서

$.ajax({
    type: 'POST',
    url: '../auth/KakaoLogin.do',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({
        access_token: authObj.access_token
    }),
    dataType: 'json',
    success: function (response) {
        console.log('서버 응답:', response);
        alert('카카오 로그인 성공');
    },
    error: function (error) {
        console.error('서버 요청 실패:', error);
    }
});

이렇게 엑세스 코드를 전달하고 있는데, 토큰 발급 과정에서 서블릿과 서비스 두 곳에서 중복으로 토큰을 요청하고 있는 것을 확인해 중복을 제거했습니다. 그런데도 똑같은 오류가 발생합니다…! ㅠㅠ

여전히 두번 요청되고 있습니다.

첨부해 주신 코드는 인가 코드 요청을 위한 코드로 보입니다.
현재 이슈는 매우 빠른 시간내로 접근 토큰 요청이 중복 발생하는 것으로 백엔드측 로직 점검해 보시면 좋을것 같습니다.

감사합니다!
토큰 발급 중복된 부분 삭제하고 약간 변경해서 400 에러는 발생하지 않게 되었습니다. 네트워크에서 200 출력되는 것도 확인했구요.
그런데 Server returned HTTP response code: 401 for URL: https://kapi.kakao.com/v2/user/me 에러가 발생하고 있습니다. 발급받은 토큰이 유효하지 않은 걸까요?

토큰이 null로 전달되고 있습니다.
참고 부탁드립니다.