Search
💬

KAKAO Login API

부제
카테고리
네트워킹
세부 카테고리
소셜 API
Combine 카테고리
최종편집일
2022/07/16 15:21
작성중
관련된 포스팅
생성 일시
2022/07/16 15:19
태그

시작하기 전에

iOS SDK 를 사용한 카카오 로그인 구현방법

1.
카카오톡으로 로그인 (APP 필요 )
카카오톡에 연결된 카카오계정 및 인증 정보를 사용
2.
기본 웹 브라우저를 통해 카카오 계정으로 로그인 (APP 필요 X)
사용자가 여러 개의 카카오계정을 사용하는 서비스나 카카오톡을 지원하지 않는 디바이스에서 사용

SDK 설치

# 필요한 모듈 추가 pod 'KakaoSDKCommon' # 필수 요소를 담은 공통 모듈 pod 'KakaoSDKAuth' # 사용자 인증 pod 'KakaoSDKUser' # 카카오 로그인, 사용자 관리 pod 'KakaoSDKTalk' # 친구, 메시지(카카오톡) #나중에 사용해보기 pod 'KakaoSDKStory' # 카카오스토리 pod 'KakaoSDKLink' # 메시지(카카오링크) pod 'KakaoSDKTemplate' # 메시지 템플릿 pod 'KakaoSDKNavi' # 카카오내비
Swift
복사
iOS SDK를 설치하면 SDK에 필요한 외부 라이브러리가 자동으로 설치됩니다.
ReactiveX iOS SDK: RxSwiftRxCocoaRxAlamofireDynamicCodable

Info.plist 설정

iOS 9.0 이상에서 iOS SDK를 통해 카카오톡이나 카카오스토리, 카카오내비 등 애플리케이션(이하 앱)을 실행시키는 기능을 이용하려면 Info.plist 파일에 설정을 추가하여 커스텀 URL 스킴 정보를 등록합니다. 이 설정은 사용자 정보 보호를 위한 OS 정책에 따라 필요한 것으로, 자세한 내용은 Privacy and Your App을 참고합니다.
[Info] > [Custom iOS Target Properties]에 Array 타입 키(Key)인 LSApplicationQueriesSchemes를 추가하고, 해당 키의 'Item'으로 커스텀 URL 스킴에 사용할 값인 'kakaokompassauth', 'kakaolink'를 추가합니다.

URL Schemes 설정하기

카카오계정을 통한 인증과 카카오톡 메시지를 통한 앱 실행을 위해 URL Schemes 설정을 합니다. [Info] > [URL Types] > [URL Schemes] 항목에 네이티브 앱 키(Native App Key)를 'kakao{NATIVE_APP_KEY}' 형식으로 등록합니다. 예를 들어 네이티브 앱 키가 '123456789'라면 'URL Schemes'에 'kakao123456789'를 입력합니다.

이해하기

Search
기능 소개
Name
Description
Kakao API
카카오계정과 앱을 연결, 사용자가 해당 앱에서 카카오 API를 사용할 수 있게 합니다.
O
카카오계정 정보로 로그인한 사용자를 서비스 데이터베이스(DB)에 회원으로 등록합니다.
X서비스 자체 구현
로그아웃 요청한 사용자의 토큰을 만료시킵니다.
O
카카오계정과 서비스 사이의 연결을 해제합니다.
O
회원 정보를 삭제하고 서비스를 더 이상 이용하지 않습니다.
X서비스 자체 구현
API 호출 권한을 증명하며, 로그인을 통해 발급받습니다.
O

OAuth2.0

OAuth 2.0은 공개 API(Open API)로 제공되는 표준 인증 방법입니다.
카카오 로그인은 사용자를 인증하고 토큰을 발급하는 기능입니다.
Search
Token Type
Role
Valid
사용자를 인증합니다.
Android, iOS : 12시간JavaScript: 2 시간REST API : 6시간
일정 기간 동안 다시 인증 절차를 거치지 않고도 액세스 토큰 발급을 받을 수 있게 해 줍니다.
2달유효기간 1달 남은 시점부터 갱신 가능

토큰의 발행 과정 OAuth2.0

1.
카카오계정 인증
2.
사용자 동의
3.
인가 코드 발급
4.
인가 코드로 토큰 발급
토큰은 매번 인증을 거치지 않고도 일정 기간 카카오 API를 사용할 수 있도록 하는 권한 증명입니다. Kakao SDK는 토큰 관리 기능을 갖고 있습니다. REST API 사용 시에는 필요에 따라 토큰 정보 확인이나 갱신을 위한 요청을 해야 합니다.
Search
구현 방법
환경
설명
Android 스마트폰
카카오톡에 연결된 카카오계정 정보 이용카카오톡 미설치 시, 카카오계정 정보 입력 웹 페이지 이용
iOS 스마트폰
카카오톡에 연결된 카카오계정 정보 이용카카오톡 미설치 시, 카카오계정 정보 입력 웹 페이지 이용
PC 또는 모바일 웹 브라우저(Web Browser)
스마트폰 기기: 카카오톡에 연결된 카카오계정 정보 이용PC 또는 Mac 기기: 카카오계정 정보 입력 웹 페이지 이용
PC 또는 모바일 웹 브라우저(Web Browser)
스마트폰 기기: 카카오계정 정보 입력 웹 페이지 이용, 해당 웹 페이지에서 사용자가 '카카오톡으로 로그인' 선택 시 카카오톡에 연결된 카카오계정 정보 이용*PC 또는 Mac 기기: 카카오계정 정보 입력 웹 페이지 이용

로그아웃

카카오 로그인의 로그아웃은 사용자가 카카오 로그인을 통해 발급받은 토큰을 만료시켜, 로그아웃을 요청한 서비스에서 해당 사용자 정보로
카카오 API를 호출할 수 없게 합니다. 이 로그아웃 처리는 카카오 API 이용에만 영향을 미치므로 서비스 회원 로그아웃은 자체 구현해야 합니다.
카카오계정의 로그아웃 처리는 다음과 같이 이뤄집니다:
사용자가 같은 카카오계정으로 여러 기기에 로그인한 상태라면, 로그아웃을 요청한 기기에서만 로그아웃됩니다. 동일한 카카오계정으로 로그인되어 있는 다른 기기에서는 로그아웃 처리되지 않습니다.
사용자가 같은 카카오계정으로 한 웹 브라우저에서 여러 서비스에 로그인한 상태라면, 로그아웃을 요청한 서비스에서만 로그아웃됩니다. 같은 웹 브라우저에 동일한 카카오계정으로 로그인되어 있는 다른 서비스에서는 로그아웃 처리되지 않습니다.
서비스 로그아웃 버튼을 통해 서비스와 카카오계정을 동시에 로그아웃 처리하고 싶다면 카카오계정과 함께 로그아웃 추가 기능을 사용합니다. 사용자가 로그아웃 버튼을 눌러 로그아웃을 요청했을 때, 사용자를 연결 페이지로 이동시켜 서비스만 로그아웃할 것인지, 카카오계정도 함께 로그아웃할 것인지 선택할 수 있도록 하는 기능입니다. 기본적인 로그아웃 기능은 토큰 만료 방식으로 동작하지만, 이 기능을 사용하면 요청한 서비스의 세션과 카카오 로그인의 세션을 만료하여 서비스와 카카오 계정에서 로그아웃 처리합니다.
카카오계정과 함께 로그아웃 기능을 사용하려면, 사용자가 로그아웃을 요청하고 리다이렉트될 Logout Redirect URI을 등록하고, 서비스 서버에서 서비스 세션을 만료시켜야 합니다. 기능 동작은 다음과 같이 이뤄집니다:
사용자가 로그아웃 버튼을 눌러 연결 페이지로 진입합니다.
사용자가 '서비스만 로그아웃', '카카오계정과 함께 로그아웃' 중 원하는 로그아웃 처리를 선택합니다.
사용자가 서비스만 로그아웃을 선택했다면 즉시 앱 정보에 등록된 Logout Redirect URI로 리다이렉트됩니다.
사용자가 카카오계정과 함께 로그아웃을 선택했다면 카카오계정 로그인 상태에 따라 다음과 같이 동작합니다.
카카오계정 세션이 존재할 경우, 카카오계정 세션을 만료시킨 후 앱 정보에 등록된 Logout Redirect URI로 리다이렉트됩니다.
카카오계정 세션이 존재하지 않을 경우, 즉시 앱 정보에 등록된 Logout Redirect URI로 리다이렉트됩니다.
카카오계정과 함께 로그아웃 기능은 REST API로 구현할 수 있습니다. 설정 및 구현 방법은 REST API 개발 가이드를 참고합니다.

연결과 연결 끊기

연결은 카카오계정의 서비스 이용 상태를 의미합니다. 연결은 사용자가 서비스에 처음 로그인할 때 발생하며, 연결을 통해 서비스는 토큰 기반의 API를, 사용자는 해당 서비스에서 카카오 API를 각각 이용할 수 있게 됩니다. 서비스와 사용자가 서로 연결되어 있지 않다면 카카오 API 관련 기능을 이용할 수 없습니다.
연결은 카카오 로그인 시 카카오 플랫폼에서 처리하므로 서비스에서 별도 API를 호출해 요청할 필요가 없습니다. 하지만 연결을 끊는 것은 서비스에서도 가능합니다. 연결 끊기 API를 사용해 서비스와 사용자의 연결 상태를 해제할 수 있습니다.
사용자는 서비스를 이용하고자 카카오계정 정보를 제공한 것이므로, 카카오 플랫폼 정책에 따라 사용자가
탈퇴하면 서비스에서 연결 끊기 처리를 해야 합니다. 연결 끊기는 사용자가 서비스에서 탈퇴하지 않아도 필요에 따라 호출할 수 있습니다.
가입 미완료 사용자 처리 안내
2020년 12월 28일부터 가입 미완료 사용자에 대한 연결 끊기 처리가 매일 진행됩니다. 카카오 로그인 후, 서비스 가입에 필요한 사용자 정보를 요청하여 24시간 이내에 서비스 최종 가입을 완료하지 않은 사용자를 대상으로 합니다. 카카오 플랫폼에서 가입 미완료 사용자에 대한 연결 끊기 처리를 한 경우에도 연결 끊기 알림을 받을 수 있습니다. 자세한 내용은 공지사항을 참고합니다.
연결 끊기는 사용자가 직접 요청하기도 합니다. 사용자가 카카오톡 설정의 연결된 서비스 관리를 통해 연결 끊기를 요청한 경우, 카카오에서 서비스 서버에 알림을 보내 연결 끊기 및 사용자 정보 처리를 요청합니다. 자세한 내용은 연결 끊기 알림 받기 가이드를 참고합니다.
서비스 회원 가입 및 탈퇴
서비스 회원 가입은 각 서비스 회원 정보에 카카오계정 사용자 정보를 회원으로 저장하는 일입니다. 이는 연결과 별개의 처리입니다. 카카오계정으로 로그인한 사용자 정보를 서비스 서버에 회원 가입 처리하지 않으면 정상적인 가입 처리가 완료되지 않습니다. 서비스 회원 탈퇴 또한 서비스가 자체적으로 구현해야 합니다. 연결 끊기는 카카오계정과 앱의 관계만 끊을 뿐, 서비스 서버에 저장된 회원 정보까지 지우지 않기 때문입니다.