페이지 이동경로
  • 문서>
  • 카카오 로그인>
  • FAQ

카카오 로그인

FAQ

이 문서는 카카오 로그인에 대해 자주 묻는 질문과 답변을 제공합니다.

공통

Q. 로그인 구현 중 에러 화면이 나타납니다.

에러 발생 시 응답의 에러 메시지로 원인을 알 수 있습니다. 주로 처음 카카오 로그인을 구현하고 인가 코드 받기를 요청했을 때, "Invalid redirect" 에러가 발생하는 경우가 많습니다.

...error="invalid_grant", error_description="Invalid redirect:...

해당 에러 메시지를 보면 '올바르지 않은 redirect_uri'라는 문구가 있습니다. 이 에러는 인가 코드 발급 요청 시 전달된 redirect_uri가 앱 정보에 등록된 값과 다를 때 발생합니다. Redirect URI 등록 가이드를 참고해 실제 카카오 로그인 절차를 수행하는 웹 페이지 등의 OAuth Redirect URI를 입력해야 합니다. 이미 Redirect URI 등록을 했다면, 에러 메시지를 통해 요청 시 파라미터로 전달된 redirect_uri 값을 확인하여 등록된 값과 일치하는지 비교합니다.

이 밖에도 API 호출 시 주로 발생하는 에러는 에러 코드와 메시지가 명시되어 있습니다. 에러 유형은 각 플랫폼 레퍼런스에서 참고할 수 있습니다. 카카오 로그인 중 발생한 에러는 문제 해결을 참고합니다.

Q. 카카오 로그인 시 카카오톡이 실행되지 않고 카카오계정 정보 입력 화면이 나타납니다.

로그인 버튼을 눌렀을 때 카카오톡으로 이동하며 간편 로그인을 할 수 있어야 하는데, 카카오계정 정보 입력 화면이 나타난다면 인증 유형(Auth Type) 설정을 했는지 확인합니다.

카카오 로그인은 인증 유형에 따라 다르게 동작합니다. 다음과 같은 인증 유형이 있습니다.

  • 현재 사용할 수 있는 모든 인증 수단
  • 카카오계정 및 비밀번호
  • 카카오톡 사용자 정보
  • 카카오스토리 사용자 정보

REST API를 사용할 때는 카카오계정 및 비밀번호로만 사용자 인증이 가능합니다. JavaScript SDK, Legacy iOS SDK, Legacy Android SDK를 사용하면 다음과 같은 옵션이 제공됩니다.

Platform Parameter Description
JavaScript throughTalk 카카오톡 간편 로그인 사용 여부, Boolean
Android AuthType 사용자 인증 타입 지정, 미지정 시 KAKAO_LOGIN_ALL
KAKAO_TALK: 카카오톡 간편 로그인
KAKAO_STORY: 카카오스토리 간편 로그인
KAKAO_ACCOUNT: 카카오계정 및 비밀번호 입력 웹뷰
KAKAO_TALK_EXCLUDE_NATIVE_LOGIN: 카카오톡 간편 로그인, 카카오톡에 연결된 카카오계정이 없을 경우 카카오계정 가입 버튼 제공, KAKAO_TALK과 중복 지정 불가
KAKAO_LOGIN_ALL: 모든 인증 유형 사용
iOS authType 사용자 인증 타입 지정, 미지정 시 nil
KOAuthTypeTalk: 카카오톡 간편 로그인
KOAuthTypeStory: 카카오스토리 간편 로그인
KOAuthTypeAccount: 카카오계정 및 비밀번호 웹뷰
nil: 옵션 지정하지 않음

위 옵션은 서비스 상황에 따라 인증 유형을 지정할 수 있도록 제공됩니다. SDK에서는 옵션마다 인증 수단 실행 경로가 상수로 지정돼 있으므로, 별도 지정이 필요하지 않습니다.

Q. 카카오톡으로 로그인한 뒤 서비스 페이지나 앱으로 돌아오지 않습니다.

모바일 웹에서 카카오톡 로그인 시 해당 현상이 발생한다면 정상 동작입니다. 스마트폰 OS 정책에 따라 앱에서 임의로 다른 앱을 불러올 수 없습니다. 사용자가 직접 서비스 웹 페이지(브라우저)로 돌아가야만 합니다. 카카오톡 로그인 화면에서도 안내 문구를 보여줍니다. 서비스 페이지로 이동했을 때 로그인이 완료된다면 기능이 정상 동작하는 것입니다.

Q. 회원 가입 후 다시 로그인했을 때 정상적으로 로그인 완료되지 않습니다.

웹 브라우저의 경우, 로그인한 사용자의 정보가 회원 정보에 잘 저장되어 있고 로그인 시 올바르게 불러와지는지 확인합니다. 로그인 후 사용자 정보를 호출해 회원번호(user id)를 받은 뒤, 이 정보로 서비스 회원 정보에서 해당 사용자의 정보를 불러오는 부분에 이상이 없어야 합니다.

네이티브 앱의 경우, 카카오 로그인 인증 정보는 토큰으로 관리됩니다. 토큰은 실제 인증을 담당하는 액세스 토큰, 액세스 토큰 만료 시 간편하게 재발급 받을 수 있도록 해 주는 리프레시 토큰 두 가지가 있습니다. 사용자가 로그아웃을 하지 않았다면, 일정 기간 내 다시 로그인했을 때는 액세스 토큰 또는 리프레시 토큰을 사용해 로그인할 수 있습니다. 토큰 유효 기간 동안은 다시 카카오톡이나 카카오계정으로 사용자 정보를 인증할 필요가 없습니다.

  • 사용자가 로그아웃하지 않았음
  • 토큰 유효 기간 이내임

위 두 가지 조건을 만족함에도 토큰을 사용한 재로그인이 불가능하다면, 다음과 같이 확인합니다.

  • 토큰 유효성을 검사합니다. 토큰이 유효하다면 다음 단계로, 토큰이 유효하지 않다면 삭제 후 사용자가 다시 로그인하도록 처리합니다.
  • 토큰이 유효하지만 정상적으로 로그인되지 않는다면 서비스에서의 로그인 절차를 확인합니다. 회원 가입 처리나 정보 갱신이 올바르게 이뤄지지 않았을 수 있습니다.
  • 이 외, 인증 과정에 에러가 발생해 로그인에 실패하는 경우가 있습니다. 에러 메시지를 참고해 원인을 파악합니다.

Q. 로그아웃이 올바르게 완료되지 않습니다.

REST API라면 로그아웃 요청에 사용된 토큰 정보가 올바른지 확인합니다. Kakao SDK 사용 시에는 로그아웃 요청과 함께 토큰과 쿠키가 삭제되기 때문에 함수 호출 결과와 무관하게 실질적인 로그아웃이 이뤄지므로, API 동작 외의 다른 부분에 실패 원인이 있을 가능성이 높습니다.

Q. 한 번에 로그인된 모든 기기에서 로그아웃할 수 있나요?

현재 제공되지 않는 기능입니다. 카카오계정은 여러 기기에서 로그인하는 것(Multi device)을 지원합니다. 따라서 로그아웃 요청은 현재 사용 중인 기기에서만 로그인을 해제하고, 다른 기기의 로그인 상태는 유지됩니다.

Q. 로그아웃 후 다시 로그인할 때 이전에 로그인한 계정으로 로그인됩니다.

로그아웃 처리가 올바르게 완료되지 않았거나, 브라우저에 저장된 쿠키 때문에 발생하는 현상입니다. iOS나 Android SDK 사용 시 정상적으로 로그아웃한 경우 토큰과 쿠키가 모두 지워지고, REST API 사용 시에는 액세스 토큰과 리프레시 토큰이 삭제됩니다. 현재 카카오계정 쿠키는 삭제되지 않으므로 다시 인증을 시도하면 같은 계정으로 로그인될 수 있습니다.

Q. 로그아웃 후 다시 로그인하면 ID가 변경되나요?

아닙니다. 각 서비스 사용자에게 발급되는 회원번호(user id)는 고유한 값이며 로그아웃이나 탈퇴를 하더라도 변하지 않습니다.

Q. 사용자 정보를 조회했을 때 특정 항목이 비어 있습니다.

사용자가 간편가입 시 제공 동의한 항목이라도 값이 비어 있을 수 있습니다. 사용자가 카카오 서비스 이용 중 한 번도 해당 정보를 입력한 적 없는 경우입니다. 이에 대비하여 간편가입 시 제공 동의한 정보가 비어 있을 때, 카카오에서 사용자로부터 해당 정보를 입력 받아 서비스에 제공하는 기능이 있습니다. 사용자 관리의 각 항목에서 카카오계정 정보를 통한 수집 옵션을 설정하면 됩니다.

만약 카카오계정 정보를 통한 수집 옵션이 꺼져 있어서 일부 회원 정보에 누락이 있을 경우, 옵션을 켠 뒤 사용자가 다시 로그인했을 때 정보 입력 과정을 거치게 됩니다. 로그인 후 갱신된 사용자 정보로 회원 정보를 업데이트합니다.

해당 옵션이 켜져 있어도, 사용자가 카카오에 정보 제공을 거부한 항목은 빈 값입니다. 카카오에서도 그 정보를 보유하고 있지 않기 때문입니다. 비어 있는 정보가 서비스 이용에 꼭 필요한 것이라면, 서비스 이용 중 사용자가 직접 정보를 입력하거나 가입을 취소할 수 있도록 해야 합니다.

카카오계정 정보를 통한 수집을 켠 후에도, 특정 항목에 대한 조회를 할 수 없어요.

카카오계정을 통한 수집 옵션을 켜기 전에 사용자가 이미 해당 항목에 대한 제3자 제공 동의를 했다면, 서비스에서 다시 동의 요청을 하더라도 수집과 동의 절차를 거치지 않습니다. 사용자가 연결을 끊은 후에는 다시 카카오계정을 통한 수집 기능이 동작합니다.

Q. 동의 화면에 특정 필수 동의 항목이 노출되지 않습니다.

특정 동의 항목을 [필수 동의]로 설정했더라도, 사용자에게 정보가 없다면 동의 화면에 해당 동의 항목이 노출되지 않습니다.

이 경우, 해당 동의 항목에 '카카오계정 정보를 통한 수집(수집 후 제공)' 옵션을 설정합니다. '수집 후 제공' 옵션은 카카오 로그인 시 사용자가 해당 동의 항목의 정보를 갖고 있지 않다면, 사용자로부터 정보를 입력 받아 동의 화면에서 동의 받을 수 있도록 해 줍니다. 단, 전화번호는 '수집 후 제공' 옵션을 사용할 수 없으므로 유의합니다.

'수집 후 제공' 옵션에 따라 사용자의 정보 입력이 필요할 경우, 사용자는 추가정보 입력 단계를 거쳐 카카오 로그인 동의 화면으로 이동합니다. 아래는 추가정보 입력 단계에서 나타나는 화면의 예시입니다.

수집 후 제공 화면

Q. 카카오계정 사용자 정보가 바뀌었을 때 어떻게 처리하나요?

사용자마다 고유하게 발급되는 ID나 본인 인증 정보인 CI를 제외하면, 사용자 정보는 항상 변경될 가능성이 있습니다. 로그인 시 사용자 정보 가져오기를 통해 최신 정보로 갱신합니다.

Q. 가입에 필수는 아니지만 서비스 이용 중 필요한 추가 정보를 따로 받을 수 있나요?

추가 정보 동의 받기 기능을 사용합니다. 사용자가 간편 가입 시 선택 항목이어서 제공 동의하지 않은 항목이라도, 해당 정보를 필요로 하는 기능을 사용자가 쓰려고 한다면 다시 정보 제공에 동의할 것인지 물어볼 수 있습니다. 하지만 추가 정보 동의 요청에도 사용자가 거부한디면 해당 기능을 제공하지 않아야 합니다.

Q. 카카오 로그인과 카카오싱크가 제공하는 사용자 정보 종류를 알려주세요.

카카오가 제공하는 사용자 정보의 종류는 사용자 정보에서 확인할 수 있습니다. 다음은 사용자 정보 제공 조건입니다.

  1. 각 사용자 정보 제공을 위한 동의 항목을 설정해야 합니다.
  2. 설정된 동의 항목에 대해 사용자가 동의해야 합니다.

Q. 사용자가 어떤 사용자 정보를 제공하기로 동의했는지 확인할 수 있나요?

네. 앱에서 어떤 동의 항목을 설정했고, 사용자가 어떤 동의 항목에 동의했는지 동의 내역 확인하기 API를 통해 확인할 수 있습니다.

혹은 사용자 정보 가져오기 API의 응답을 통해서도 확인할 수 있습니다. 사용자가 동의한 정보와 함께 needs_agreement를 통해 추가적인 동의가 필요한 항목을 확인할 수 있습니다.

Q. 이메일 값을 필수로 설정했는데, 일부 사용자의 이메일 값이 비어 있습니다.

사용자 이메일 정보가 필요한데 값을 받지 못한 경우라면, 다음 순서로 확인합니다.

  1. 동의 항목에 이메일을 설정했는지 확인합니다. 필수 또는 선택으로 설정해야만 사용자 이메일 정보를 받을 수 있습니다.
  2. 카카오 로그인 시 동의 화면에 이메일 항목이 포함되어 있었는지 확인합니다. 동의 항목에 이메일이 설정되지 않았거나, 사용자가 이메일 정보를 갖고 있지 않은 경우에는 이메일 항목이 보이지 않습니다.
  3. 해당 사용자가 이메일을 소유하고 있는 계정인지 확인합니다. 사용자 정보의 has_email 값이 true라면 이메일 정보가 있는 사용자이지만, 해당 사용자가 카카오 로그인 동의 화면을 거칠 당시에는 이메일 값이 없는 경우였을 수 있으므로 추가 항목 동의 받기를 통해 다시 한 번 이메일 정보를 요청합니다.

Q. 전화번호는 수집 후 제공 옵션을 사용할 수 없나요?

카카오계정(전화번호) 동의 항목은 수집 후 제공 설정을 사용할 수 없습니다. 전화번호는 카카오계정에 연결된 카카오톡에서 가져오며, 카카오톡을 사용하지 않는 카카오계정인 경우에는 전화번호를 확보할 수 없기 때문입니다. 만약 전화번호가 필수 동의 항목으로 설정돼 있음에도 값이 비어 있는 사용자가 있다면, 해당 사용자는 카카오톡을 사용하지 않아 카카오에서 전화번호를 제공할 수 없는 경우입니다. 이 때는 자체적으로 전화번호를 수집 및 저장하여야 합니다.