1.SDK 충돌
처음 카카오 로그인 버튼을 만들고,
카카오 SDK 방식으로 로그인 요청을 시도했지만
SDK 스크립트가 충돌이 자주 일어나고,
서버와 통신 로직을 Java 에서 작성해야 했기 때문에
최종적으로 SDK가 아닌 a태그 + HttpURLConnection 방식으로 변경했다.
URL 예시
https://kauth.kakao.com/oauth/authorize?response_type=code
&client_id=REST_API_KEY &redirect_uri=http://localhost:8088/kakaoLogin/kakaoLogin.do
처음엔 줄바꿈이 들어간 상태여서 정상 동작하지 않았다.
Kakao OAuth는 띄어쓰기, 줄바꿈, 값 틀림 → 즉시 오류 발생.
2.URL에 빨간 줄
카카오 API 요청 코드 작성 중,
URL url = new URL(tokenUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
여기서 url.openConnection() 부분에 빨간 줄이 떠서 제대로 동작하지 않았다.
원인은 자바 버전 문제였다.
프로젝트 Facet을 확인하니 Java 1.3 으로 설정되어 있었고,
나는 Java 8 기능 (HttpURLConnection, JSON 파싱 등)을 사용 중이었다.
🔧 해결 과정
Eclipse → Project → Properties → Project Facet → Java 버전 1.8로 변경
근데 변경하는 과정에서 또 에러 발생:
Build path contains duplicate entry: JavaSE-1.8
그래서 다시:
Project → Build Path → Library → 기존 JRE 삭제 → Add Library → JRE System Library → Workspace default JRE(1.8)
최종적으로 버전이 정상적으로 JavaSE-1.8로 세팅되었고 빨간 줄 사라짐.
어떻게 바꾸긴 했는데 수업들을 때 버전충돌 날까봐 좀걱정되긴함...
3. Access Token 요청 단계에서 발생한 에러들
여기서 가장 많이 오류가 발생했다.
❌ 오류 메시지 #1
Server returned HTTP response code: 401 for URL: https://kauth.kakao.com/oauth/token
원인 → 요청 파라미터 부족 / redirect_uri mismatch

뭔지도 모르고 켜둔건데 계속 에러나서 결국 사용안함으로 설정하고 나서 해결 됬다
❌ 오류 메시지 #2
Redirect URI 충돌 문제
카카오 개발자 페이지에서 등록한 URI
그러나 실제 요청 URL은
이 하나라도 다르면 카카오가 요청을 거절한다.
그래서 링크 수정했다
<a href="https://kauth.kakao.com/oauth/authorize?response_type=code
&client_id=내 REST 키
&redirect_uri=http://localhost:8088/kakaoLogin/kakaoLogin.do">
그래도 같은 오류.
그래서 REST API 키 자체를 재발급함.
"error": "invalid_client", "error_description": "Bad client credentials"
원인 → REST API KEY 값이 잘못됨
카카오 개발자 센터에서 새로 발급한 키를 제대로 넣지 않아 발생.
키를 다시 복사 후 수정 → 해결.
❌ 오류 메시지 #3
📌 여전히 401 → 원인은 토큰 재사용
카카오 OAuth는 한 번 발급된 인증코드를 다시 쓰면
"error": "invalid_grant", "description": "authorization code not found"
이런 에러가 발생한다.
그래서
- 서버 재시작
- 브라우저 쿠키 삭제
- 로그인 다시 진행
하지만 내 예상과 달리 오류 계속 발생했다.
👉 이유: 브라우저가 자동으로 이전 인증 세션을 유지했기 때문.
🚨 결국 다른 브라우저 / 시크릿 모드 / PC 재부팅으로 해결됨.
4. 사용자 정보 요청 단계에서 다시 오류 발생
오류 메시지
401 Unauthorized: https://kapi.kakao.com/v2/user/me
원인 → access_token 값이 null인 상태에서 user/me 요청을 보내버림.
(바로 직전 단계에서 invalid_grant 발생 후 token=null이었음)
즉,
❌ null token → 사용자 정보 요청
✔ 정상 token → 사용자 정보 응답
5. 예외 처리 개선 (null return 문제)
처음엔 catch { return null; } 구조였는데
그 경우 화면 이동 없이 프로그램이 종료되는 UX가 됨.
forward.setRedirect(false);
forward.setPath("/message.jsp");
→ 오류 발생 시 사용자에게 안내 메시지 제공.
🏁 결론: 오늘 작업을 통해 얻은 핵심 경험 6가지
| OAuth 인증은 단계별 구조가 명확함 | 인가 → 토큰 → 사용자정보 |
| redirect_uri, client_id 오타는 치명적 | 1글자만 틀려도 인증 실패 |
| 인가코드(code)는 1회용 | 재사용 → invalid_grant |
| Access Token은 성공 신호 | 토큰 나오면 인증 성공 |
| user/me 요청은 GET + Authorization Header 필요 | Token 없이 요청 → 401 |
| 서버 오류처리는 forward 처리 | return null X |
'🐢🐢꼬부기 LV.2 | 실습•에러 > 🛡️껍질에 숨기(에러해결)' 카테고리의 다른 글
| ORA-00947: not enough values 값의 수가 충분하지 않습니다 (0) | 2025.12.07 |
|---|---|
| 커스텀 태그 사용 오류 해결 (0) | 2025.12.01 |
| 카카오 로그인 API 자바로직 오류 해결 (0) | 2025.11.29 |
| 카카오 로그인 API 연동 오류 정리 (0) | 2025.11.28 |
| FrontController/ActionFactory 에러해결하기 (0) | 2025.11.27 |