시작하기 전에
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에 필요한 외부 라이브러리가 자동으로 설치됩니다.
•
•
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'를 입력합니다.
이해하기
OAuth2.0
OAuth 2.0은 공개 API(Open API)로 제공되는 표준 인증 방법입니다.
카카오 로그인은 사용자를 인증하고 토큰을 발급하는 기능입니다.
토큰의 발행 과정 OAuth2.0
1.
카카오계정 인증
2.
사용자 동의
3.
인가 코드 발급
4.
인가 코드로 토큰 발급
토큰은 매번 인증을 거치지 않고도 일정 기간 카카오 API를 사용할 수 있도록 하는 권한 증명입니다. Kakao SDK는 토큰 관리 기능을 갖고 있습니다. REST API 사용 시에는 필요에 따라 토큰 정보 확인이나 갱신을 위한 요청을 해야 합니다.
로그아웃
카카오 로그인의 로그아웃은 사용자가 카카오 로그인을 통해 발급받은 토큰을 만료시켜, 로그아웃을 요청한 서비스에서 해당 사용자 정보로
카카오 API를 호출할 수 없게 합니다. 이 로그아웃 처리는 카카오 API 이용에만 영향을 미치므로 서비스 회원 로그아웃은 자체 구현해야 합니다.
카카오계정의 로그아웃 처리는 다음과 같이 이뤄집니다:
•
사용자가 같은 카카오계정으로 여러 기기에 로그인한 상태라면, 로그아웃을 요청한 기기에서만 로그아웃됩니다. 동일한 카카오계정으로 로그인되어 있는 다른 기기에서는 로그아웃 처리되지 않습니다.
•
사용자가 같은 카카오계정으로 한 웹 브라우저에서 여러 서비스에 로그인한 상태라면, 로그아웃을 요청한 서비스에서만 로그아웃됩니다. 같은 웹 브라우저에 동일한 카카오계정으로 로그인되어 있는 다른 서비스에서는 로그아웃 처리되지 않습니다.
서비스 로그아웃 버튼을 통해 서비스와 카카오계정을 동시에 로그아웃 처리하고 싶다면 카카오계정과 함께 로그아웃 추가 기능을 사용합니다. 사용자가 로그아웃 버튼을 눌러 로그아웃을 요청했을 때, 사용자를 연결 페이지로 이동시켜 서비스만 로그아웃할 것인지, 카카오계정도 함께 로그아웃할 것인지 선택할 수 있도록 하는 기능입니다. 기본적인 로그아웃 기능은 토큰 만료 방식으로 동작하지만, 이 기능을 사용하면 요청한 서비스의 세션과 카카오 로그인의 세션을 만료하여 서비스와 카카오 계정에서 로그아웃 처리합니다.
카카오계정과 함께 로그아웃 기능을 사용하려면, 사용자가 로그아웃을 요청하고 리다이렉트될 Logout Redirect URI을 등록하고, 서비스 서버에서 서비스 세션을 만료시켜야 합니다. 기능 동작은 다음과 같이 이뤄집니다:
•
사용자가 로그아웃 버튼을 눌러 연결 페이지로 진입합니다.
•
사용자가 '서비스만 로그아웃', '카카오계정과 함께 로그아웃' 중 원하는 로그아웃 처리를 선택합니다.
•
사용자가 서비스만 로그아웃을 선택했다면 즉시 앱 정보에 등록된 Logout Redirect URI로 리다이렉트됩니다.
•
사용자가 카카오계정과 함께 로그아웃을 선택했다면 카카오계정 로그인 상태에 따라 다음과 같이 동작합니다.
◦
카카오계정 세션이 존재할 경우, 카카오계정 세션을 만료시킨 후 앱 정보에 등록된 Logout Redirect URI로 리다이렉트됩니다.
◦
카카오계정 세션이 존재하지 않을 경우, 즉시 앱 정보에 등록된 Logout Redirect URI로 리다이렉트됩니다.
연결과 연결 끊기
연결은 카카오계정의 서비스 이용 상태를 의미합니다. 연결은 사용자가 서비스에 처음 로그인할 때 발생하며, 연결을 통해 서비스는 토큰 기반의 API를, 사용자는 해당 서비스에서 카카오 API를 각각 이용할 수 있게 됩니다. 서비스와 사용자가 서로 연결되어 있지 않다면 카카오 API 관련 기능을 이용할 수 없습니다.
연결은 카카오 로그인 시 카카오 플랫폼에서 처리하므로 서비스에서 별도 API를 호출해 요청할 필요가 없습니다. 하지만 연결을 끊는 것은 서비스에서도 가능합니다. 연결 끊기 API를 사용해 서비스와 사용자의 연결 상태를 해제할 수 있습니다.
사용자는 서비스를 이용하고자 카카오계정 정보를 제공한 것이므로, 카카오 플랫폼 정책에 따라 사용자가
탈퇴하면 서비스에서 연결 끊기 처리를 해야 합니다. 연결 끊기는 사용자가 서비스에서 탈퇴하지 않아도 필요에 따라 호출할 수 있습니다.
가입 미완료 사용자 처리 안내
연결 끊기는 사용자가 직접 요청하기도 합니다. 사용자가 카카오톡 설정의 연결된 서비스 관리를 통해 연결 끊기를 요청한 경우, 카카오에서 서비스 서버에 알림을 보내 연결 끊기 및 사용자 정보 처리를 요청합니다. 자세한 내용은 연결 끊기 알림 받기 가이드를 참고합니다.
서비스 회원 가입 및 탈퇴
서비스 회원 가입은 각 서비스 회원 정보에 카카오계정 사용자 정보를 회원으로 저장하는 일입니다. 이는 연결과 별개의 처리입니다. 카카오계정으로 로그인한 사용자 정보를 서비스 서버에 회원 가입 처리하지 않으면 정상적인 가입 처리가 완료되지 않습니다.
서비스 회원 탈퇴 또한 서비스가 자체적으로 구현해야 합니다. 연결 끊기는 카카오계정과 앱의 관계만 끊을 뿐, 서비스 서버에 저장된 회원 정보까지 지우지 않기 때문입니다.