401 에러가 발생할 때

401 에러는 해당 리소스에 유효한 인증 자격 증명이 없어 발생한 것 입니다.

즉, 호출한 서비스측에서 잘못 요청하였거나 잘못된 정보로 요청한 상황으로 카카오에서 응답으로 전달한 Json 에러 메시지를 확인 해야합니다.

(1) API 유형별 에러와 원인

  • 응답: 실패, 요청 시 사용한 액세스 토큰이 유효하지 않은 경우
{"code":-401,"msg":"this access token does not exist"}

해결책 : 유효한 액세스 토큰을 설정하거나 가이드에 명시된 Content-Type으로 API 호출 했는지 확인합니다.

  • 응답: 실패, 만료된 액세스토큰으로 액세스 토큰 정보 요청한 경우
{"code":-401,"msg":"this access token is already expired"}

해결책 : 액세스 토큰을 재발급 받습니다.

  • 응답: 실패, 디벨로퍼스 허용 IP 주소에 등록하지 않은 IP에서 API 호출한 경우
{"code":-401,"msg":"ip mismatched! callerIp=xxx.xxx.xxx.xxx. check out registered ips."}

해결책 : 허용 IP 주소](시작하기 | Kakao Developers 시작하기)에 callerIp를 등록하거나, 허용 IP 주소를 모두 삭제 하여 IP 체크를 하지 않도록 합니다.

  • 응답: 실패, target_app_key가 없는 경우
{"code":-401,"msg":"no authentication key!"}

해결책 : 앱키를 올바르게 설정했는지 확인합니다.


HttpURLConnection 를 이용하는 경우, 에러 메시지는 ErrorStream으로 전달됩니다.

Java 에서 HttpURLConnection 객체 사용하는 경우 아래와 같이 확인 할 수 있습니다.
에러 Trace 에는 에러 메시지가 표시되지 않습니다.

			InputStream stream = conn.getErrorStream();
		    if (stream != null) {
			    try (Scanner scanner = new Scanner(stream)) {
			        scanner.useDelimiter("\\Z");
			        response = scanner.next();
			    }			
			    System.out.println("error response : " + response);
		    }