개발하는 감자
[카카오 로그인 API] 401 Unauthorized: [no body] 에러 본문
카카오 로그인 구현 도중, 액세스 토큰까지 발급이 다 완료된 상태인데 토큰을 통해 사용자 정보 조회하는 과정에서 401 에러가 계속해서 발생했다.
검색해 보면 해당 에러는 거의 api 호출 시 정보를 제대로 전송하지 않아 발생되는 에러였는데, 계속 확인해 봐도
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.setBearerAuth(accessToken);
헤더에 정보를 제대로 잘 전달하고 있었다.
- 카카오 로그인 API 토큰을 이용한 사용자 정보 조회 시 헤더에 담아 넘겨야 할 값
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#req-user-info
✅ 해결 과정
정보는 제대로 잘 전달되고 있으니, 토큰에서 문제가 있는 건가 싶어 카카오 로그인 API 문서에서
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#get-token-info
해당 문서를 통해 토큰 정보를 확인하는 코드를 작성했다.
- 토큰 정보 확인
String tokenReqUrl = "https://kapi.kakao.com/v1/user/access_token_info";
RestTemplate rtToken = new RestTemplate();
HttpHeaders headersToken = new HttpHeaders();
headersToken.setBearerAuth(accessToken);
HttpEntity<MultiValueMap<String, String>> kakaoProfileRequestToken =
new HttpEntity<>(headersToken);
ResponseEntity<String> responseToken =
rtToken.exchange(tokenReqUrl, HttpMethod.GET, kakaoProfileRequestToken, String.class);
System.out.println("responseToken = " + responseToken);
해당 코드를 작성해 유저 정보를 조회하는 코드 앞에 넣어 실행했다.
실행 결과 토큰의 문제는 아니었지만, 에러 문구를 더욱 상세하게 확인할 수 있었다.
401 Unauthorized: "{"msg":"ip mismatched! callerIp={ip 주소}. check out registered ips.","code":-401}"
kakao developers 에서 내 애플리케이션 > 고급 설정 > 허용 IP 주소 섹션에서 허용 서버 IP 주소에서 내 IP 주소를 설정하지 않아 생긴 문제 같았다.
해당 섹션에 에러에서 나온 callerIp 주소를 추가해 준 후, 다시 실행해 보니 사용자 정보를 잘 불러오는 것을 볼 수 있었다.
허용 IP 주소를 설정하지 않았을 때 나타나는 오류는 해당 공식 문서에도 잘 정리되어 있다.
'프로젝트 > Tripture' 카테고리의 다른 글
[AWS EC2] 테스트 서버 에러 기록 (1) | 2024.07.28 |
---|