카카오 간편 로그인 인가 코드 발급 요청 실패한 경우에 관해 질문드립니다

안녕하세요 카카오 간편 로그인 요청 이후 인가 코드를 발급받지 못하는 경우가 있는데요, 관련하여 궁금한 점이 있어 질문 남깁니다.

nextjs로 구축한 웹 서비스에서 js sdk 2.1.0 버전을 사용 중이고, 로그인 요청 API는 Kakao.Auth.authorize 함수를 사용하였습니다.

인가 코드 발급 요청에 실패하는 경우 발생하는 에러는 다음과 같습니다.

  1. timeout: LOGIN_TIMEOUT
  2. invalid_request: network error occurred

다른 분들이 남겨주신 질문들을 통해서 해당 에러들의 원인은 대략적으로 파악한 상태입니다. 보다 적절한 처리를 위해 저희 프로젝트에서 발생한 이유를 구체적으로 알 수 있을까요?

앱 id는 다음과 같습니다 : 170045

안녕하세요.

서비스에서 발생한 오류는 다음과 같습니다.

KOE013
로그인 과정 중 클라이언트의 IP가 변경되면 발생하는 오류로 다음과 같은 상황에서 발생할 수 있습니다.

  • 아이폰 사용자가 iCloud 비공개 릴레이를 활성화 한 경우 발생
  • LTE 환경에서 통신망 특성 상, 네트워크 환경 불안정 시, 클라이언트의 IP가 변경

KOE320
유효하지 않은 인가코드를 사용할 때 발생하는 오류입니다.
발급받지 않은 인가코드를 사용하였거나 2회 사용하는 경우 발생합니다.

안녕하세요 답변 감사드립니다. 답변에 이해가 잘 되지 않는 부분이 있어 추가 질문 드립니다.

  1. invalid_request 에러는 KOE013 에러에 대한 원인으로 이해했는데, 말씀해주신 KOE320은 무엇인가요? 제 질문은 인가 코드 발급을 요청하는 Kakao.Auth.authorize 함수에 대한 것이었는데, FAQ 문서를 살펴보니 토큰 받기 api 사용 시 잘못된 인가코드를 사용하는 경우에 대한 에러를 말씀해주셔서 조금 혼동됩니다.
  2. 말씀해주신 ‘서비스에서 발생한 오류’ 라는 것은 Kakao.Auth.authorize 요청에서 발생한 것 뿐만 아니라 말씀드린 앱 id에서 발생한 모든 로그인 오류를 말씀하시는 걸까요?
  3. timeout: LOGIN_TIMEOUT 에러의 원인은 어떻게 생각하면 될 지 궁금합니다.

죄송합니다.LOGIN_TIMEOUT 오류를 말씀 안드렸네요;;

JS SDK v1의 팝업 로그인 사용 시, 백그라운드에서 로그인 완료 여부를 체크하고 10분이상 완료되지 않으면 LOGIN_TIMEOUT 오류가 발생합니다.

이는 팝업 후 동의 화면에서 사용자가 로그인을 하지 않거나, KOE013 오류에 의해 백그라운드 작업이 멈춘 경우 발생합니다.


Kakao.Auth.authorize 사용 시, 접근 토큰 발급은 서비스측 redirect_uri 에서 이루어 집니다.
KOE320 오류는 redirect_uri 즉, 서비스측 백앤드에서 접근 토큰 발급 시, 발생할수 있으며 현재 해당 오류 발생이 확인되었기에 로직을 점검해 보시는게 좋을것 같습니다.

안녕하세요!

  1. LOGIN_TIMEOUT => js sdk v1 팝업 로그인 이용시 발생하는 문제라고 말씀해주셨는데요, 제품을 릴리즈 하기 이전에 v2로 sdk를 업데이트 하였고, 현재도 발생하고 있는 것으로 보입니다. v2 sdk에서 발생하는 다른 이유는 없을까요?

  2. 말씀해주신 내용을 정리하자면, (1) Kakao.Auth.authorize 사용시 redirect_uri(서비스 프론트 주소)에서 인가 코드를 통해 access token 발급 요청을 할 수 있고, (2) access token 발급 요청까지 redirect_uri(서비스 프론트)에서 이루어져야 하는데, (3) 현재 저희 서비스의 경우는 access token 발급을 서비스 백엔드 측 서버 코드에서 요청하고 있는 경우가 있다는 것이 맞나요?
    처음 Auth.authorize 함수 사용으로 인가 코드를 성공적으로 받아온 이후의 토큰 발급 및 사용은 예외 처리 없이 일관된 로직으로 redirect_uri에서 처리하고 있는 상황인데 백엔드에서 접근 토큰을 발급하는 예외적인 상황이 생겼다는 것이 어떠한 경우인지가 잘 이해되지 않았습니다. (대부분의 경우 카카오 로그인은 성공적으로 됩니다)

거듭된 질문에 답변 잘 남겨주셔서 감사드립니다.

1. Kakao.Auth.authorize 사용 시, 카카오톡이 설치된 경우 카카오톡으로 인증 받게 됩니다.
이 경우도 백그라운드에서 톡 인증여부를 확인하는 작업이 진행되며, 마찬가지로 톡인증 중, 톡에서 벗어나거나 KOE013같은 오류에 의해 백그라운드 작업이 멈춘 경우 LOGIN_TIMEOUT이 발생할 수 있습니다.

2. redirect_uri 파라미터에는 서비스측 주소를 전달해야만 합니다.
카카오가 redirect_uri 로 인가코드를 전달(302 리디렉션)하면 서비스측 백앤드에서 접근토큰을 받게 됩니다.
따라서, 예외적인 상황이 아닙니다.

1개의 좋아요