REST API 를 사용하여 카카오 로그인을 구현하였습니다.
오류 상황을 설명드리자면,
상용서버
상용서버는 public IP 가 없는 private IP 만 할당됨
사용자가 상용서버에 접속할 때는 상용서버 앞단에 있는 게이트웨이 IP를 통해서 접속하고 게이트웨이에서 도메인 이름에 맞는 backend pool 을 연결해줍니다.
개발서버
개발서버는 public IP 가 할당됨
사용자가 개발서버에 접속할 때는 개발서버 앞단에 있는 게이트웨이 IP를 통해서 접속하고 게이트웨이에서 도메인 이름에 맞는 backend pool 을 연결해줍니다.
위와 같이 서버를 나누어서 개발을 진행하고 있습니다.
내 어플리케이션 > 고급 설정 > 허용 서버 IP 주소
이동하여 개발서버로 카카오 로그인을 할 때는 public IP를 입력할 수 있지만
상용서버로 카카오 로그인을 할 때는 게이트웨이 IP만 입력해서 사용중입니다.
상용서버에서는 카카오 로그인을 할 때 401 error 가 발생합니다.
여러가지 테스트를 해보았지만 상용서버와 개발서버에 차이점이 public IP가 있고 없고 차이가 전부입니다.
그렇다면, public IP 설정이 되어야 해결이 되는 문제일까요?
아니면 다른 해결방법이 존재할까요?
앱 ID: 722268
확인 부탁드립니다
tim.l
#2
안녕하세요. 응답받은 에러 Body 기재해주셔야 정확한 안내가 가능한데요.
로그상 보이는 오류들중 아래 내용으로 안내드려보면.
인가요청 시, 설정한 Redirect URI 파라메터 값과 토큰요청 시, 설정한 Redirect URI 파라메터가 달라서 발생한 에러입니다.
{"error":"invalid_grant","error_description":"Redirect URI mismatch.","error_code":"KOE303"}
인가요청 Redirect URI http://patron.digital/
토큰요청 Redirect URI https://patron.digital/
더 자세한 안내 원하시면, 응답받은 에러 Body 기재 부탁드려요.
에러코드는 다음과 같이 나왔습니다.
java.io.IOException: Server returned HTTP response code: 401 for URL: https://kapi.kakao.com/v2/user/me
java.io.IOException: Server returned HTTP response code: 401 for URL: https://kapi.kakao.com/v1/user/unlink
Redirect url은 https://patron.digital/로 정확히 입력이 되어 있었습니다.
tim.l
#4
Redirect url은 https://patron.digital/로 정확히 입력이 되어 있었습니다.
에러로그상 발생한 에러를 설명드린 것이니 잘못호출되는 부분이 있는지 살펴보시면 될 것 같습니다.
기재해주신내용의 카카오 로그인의 에러 Body 가 아니라 로그인 이후
사용자 정보조회 API와 연결끊기 API 호출 시 응답받은 401에러로 보입니다.
ip mismatched! callerIp=20.249.8.88. check out registered ips.
허용 IP에 서버 IP를 등록하셔서 사용해주시면 될 것 같습니다.
API호출 시, 아래와 같이 응답 전달되니 에러 Body 확인하시면 조치가능합니다.
참고 부탁드려요.
{"msg":"ip mismatched! callerIp=20.249.8.88. check out registered ips.","code":-401}
callerIp 허용 IP에 추가하니 카카오 로그인 정상 작동이 확인되었습니다.
callerIp 가 어디서 조회되는 IP 인지 알 수 있을까요?
tim.l
#6
카카오 API를 호출한 IP로
백엔드에서 호출하신다면 서버 주소이고
프론트에서 호출하신다면 클라이언트 주소입니다.