페이지 이동경로
  • 문서>

개발 환경 구성

이미 카카오 SDK를 사용해 본 적이 있으시다면 본 항목을 건너 뛰셔도 좋습니다.

iOS, Android, JavaScript 개발 환경에서는 애플리케이션(이하 앱)에 카카오 SDK(Software Developemnt Kit)를 연동해 카카오 API를 사용할 수 있습니다.

REST API는 SDK 연동 없이도 사용할 수 있으나, 카카오 SDK가 내부적으로 처리해주는 토큰 관리나 응답 처리 등 모든 기능이 제공되는 것은 아니므로 개발 환경에 맞는 SDK 적용 방법을 알아두는 것이 좋습니다.

REST API

REST API는 HTTP 요청을 보낼 수 있는 환경이라면 어디서든 이용 가능합니다. 카카오 디벨로퍼스 도구 메뉴에서 REST API를 개발하고 디버깅하는 툴들을 사용할 수 있습니다. 직접 기기에서 테스트하려면 여기에서 curl을 다운로드해 사용합니다.

REST API 사용 가능 환경 예시 모바일/PC 웹 환경
Java, Ruby, Python 등 다양한 환경의 웹 서버
iOS, Android 등 모바일 환경

SDK 다운로드 페이지에서 최신 버전 파일을 내려 받을 수 있습니다. 카카오싱크 연동을 위해서는 풀 버전 다운로드가 필요합니다. 카카오 SDK는 기능 추가 또는 보완을 위한 업데이트가 지속적으로 이뤄지므로 다운로드 페이지 또는 개발자 포럼인 DevTalk에 안내되는 변경 이력을 종종 참고해야 합니다. 사용하는 기능에 따라 SDK 버전 업데이트가 필요할 때도 있습니다.

다음 가이드는 개발 환경에 따라 다소 차이가 있을 수 있으며, 개발 진행에 어려움이 있을 때는 DevTalk에서 이슈를 검색하거나 문의할 수 있습니다.

요구사양

2019년 10월 23일 배포된 최신 버전 카카오 SDK 기준으로 다음과 같은 환경이 필요합니다.

Platform Requirements
Android Android SDK 버전 4.0(API level 14), 카카오톡 버전 4.2.0 이상
iOS iOS 버전 9.0 이상, 카카오톡 버전 3.9.5 이상
JavaScript IE 8 이상, 카카오스토리 사진 업로드 기능 사용 시 IE 10 이상
Chrome, Safari, Firefox 최신 버전

JavaScript SDK 사용 방법

카카오 디벨로퍼스에 등록된 앱 정보에는 고유한 JavaScript 키가 발급되어 있습니다. 간단한 샘플 앱을 통해 카카오 SDK와 이 키의 사용법을 확인해 보겠습니다.

  • 내 애플리케이션-앱 만들기를 클릭해 새로운 샘플용 카카오 디벨로퍼스 애플리케이션(이하 앱)을 만듭니다.
  • 샘플 앱 설정에 웹 플랫폼과 사이트 도메인을 등록합니다. (예 : http://localhost:8080)
  • 아래 내용의 html 파일을 만들고, Kakao.init('YOUR APP KEY') 중 'YOUR APP KEY' 부분을 샘플 앱의 JavaScript 키로 대체합니다.
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8"/>
        <title>Kakao JavaScript SDK</title>
        <script src="//developers.kakao.com/sdk/js/kakao.min.js"></script>
        <script>
            // SDK를 초기화 합니다. 사용할 앱의 JavaScript 키를 설정해 주세요.
            Kakao.init('YOUR APP KEY');

            // SDK 초기화 여부를 판단합니다.
            alert(Kakao.isInitialized());
        </script>
    </head>
    <body>
    </body>
    </html>
  • 샘플 앱의 웹 플랫폼에 등록된 도메인의 웹 서버에 앞서 만든 html 파일을 등록합니다. 예를 들어 Python이 설치된 컴퓨터라면 cmd 또는 터미널에서 해당 폴더로 이동 후 다음과 같이 테스트용 웹 서버를 실행할 수 있습니다.
$ cd /path/to/your/folder/
$ python -m SimpleHTTPServer 8080
  • 웹 브라우저에서 등록한 html 파일 경로로 접속합니다. 알림창(alert)에 true가 표시된다면 SDK가 정상적으로 초기화된 것입니다.

iOS SDK 사용 방법

iOS 앱 개발 도구인 Xcode에서 카카오 SDK를 설정해야 합니다. Xcode에 대한 정보는 여기를 참고합니다. 카카오 SDK는 ARMv7, ARMv7s, ARM64를 지원하며 iOS 9.0 버전 이상이 필요합니다.

새로운 프로젝트 생성 시 카카오 SDK를 사용하는 설정 방법은 다음과 같습니다.

  • iOS용 최신 카카오 SDK를 다운로드 받아 압축을 풀고, Xcode에서 카카오 SDK를 참조할 새로운 프로젝트를 생성합니다.
  • 새 프로젝트의 Frameworks Group에 다운로드 받은 KakaoOpenSDK.framework 폴더를 마우스로 끌어다 놓습니다(Drag&Drop).
Frameworks에 iOS SDK 끌어다 놓기 설정 확인

카카오 SDK 연동이 정상적으로 완료되었다면 Frameworks에서 KakaoOpenSDK.framework 포함 여부를 확인할 수 있습니다. Link Binary With Libraries에 카카오 SDK framework가 올바르게 추가되어 있는지도 확인합니다.

프레임워크(Framework)가 잘 추가되었다면 프로젝트의 Other Linker Flags에 -all_load 옵션을 추가합니다. 옵션 추가 후 다른 라이브러리와의 충돌로 빌드가 실패한다면 -force_load $(SRCROOT)/KakaoOpenSDK.framework/KakaoOpenSDK를 사용해 강제 로드합니다.

Frameworks 확인하기

카카오 SDK와 프로젝트의 연동을 마쳤다면 가장 기본적인 기능인 카카오 로그인을 구현해 봅니다.

카카오 로그인은 카카오 인증 서버로부터 사용자를 인증하고, 사용자 토큰을 받아와 카카오 API를 호출할 수 있도록 합니다. 로그인 요청 응답을 받는 Redirect URI를 통해 인증 과정이 올바르게 진행되게끔 AppDelegate에 아래와 같은 코드를 추가합니다.

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
                                       sourceApplication:(NSString *)sourceApplication
                                              annotation:(id)annotation {
    ...
    if ([KOSession isKakaoAccountLoginCallback:url]) {
        return [KOSession handleOpenURL:url];
    }
    ...
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
                                                 options:(NSDictionary<NSString *,id> *)options {
    ...
    if ([KOSession isKakaoAccountLoginCallback:url]) {
        return [KOSession handleOpenURL:url];
    }
    ...
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [KOSession handleDidBecomeActive];
}
참고 로그인 성공 시 Access Token, Refresh Token을 참조할 수 있습니다.
[KOSession sharedSession].token.accessToken
[KOSession sharedSession].token.refreshToken

Android SDK 사용 방법

카카오 SDK는 gradle 기반으로 만들어져 Android Studio IDE에서 최적화된 환경을 제공합니다. 여기서는 Android Studio IDE에서 설정하는 방법을 안내합니다.

안드로이드 SDK에 아래와 같이 카카오 SDK 의존성 설정이 돼 있는지 확인합니다.

  • build.gradle
subprojects {
  repositories {
    google()
    jcenter()
    maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
  }
}
  • app/build.gradle
dependencies {
  // 카카오 로그인
  implementation 'com.kakao.sdk:usermgmt:1.27.0'
  // 카카오톡
  implementation 'com.kakao.sdk:kakaotalk:1.27.0'
}
주의 File encoding이 UTF-8로 돼 있는지 확인합니다.
Eclipse에서는 카카오 SDK를 어떻게 사용하나요? 카카오 SDK 소스를 통한 Eclipse 개발 환경 지원은 더 이상 공식적으로 지원하지 않습니다. Eclipse에서 카카오 SDK를 사용하려면 Gradle이나 Maven 프로젝트를 사용해야 하며, Android 개발 가이드에서 설정법을 확인할 수 있습니다.

카카오 SDK를 앱과 연결하는 작업이 필요합니다. KakaoAdapter 객체를 사용해 카카오 SDK에 필요한 정보를 제공할 수 있습니다.

앱이 가진 정보를 얻기 위한 인터페이스(interface)인 IApplicationConfig, 로그인 세션(Session)을 생성할 때 필요한 옵션을 얻는 추상 클래스(abstract class)인 ISessionConfig를 구현합니다. ISessionConfigKakaoAdapter에 기본 설정되어 있으며, 설정 변경이 필요할 때 상속해서 사용합니다.

IApplicationConfig

Name Return Description
getApplicationContext Context Application Context

ISessionConfig

Name Return Description
getAuthTypes AuthType 로그인 버튼으로 로그인 시 인증 받을 타입
미지정 시 가능한 모든 옵션 지정
isUsingWebviewTimer boolean 로그인 WebView에서 pause와 resume 시 Timer 설정
CPU 소모 절약
true일 경우 모든 카카오 WebView 로그인 화면에 Timer를 설정해줘야 함
default false
isSecureMode boolean 로그인 시 Acceess Token과 Refresh Token 암호화 여부
isSaveFormData boolean 로그인 WebView email 입력 폼에서 데이터 저장 여부 결정
default true

AuthType (Enum class)

Name Value Description
KAKAO_TALK 0 카카오톡으로 로그인
KAKAO_STORY 1 카카오스토리로 로그인
KAKAO_ACCOUNT 2 WebView Dialog를 통해 카카오계정 로그인
KAKAO_LOGIN_ALL 4 모든 로그인 방식 사용
KAKAO_TALK_ONLY 5 카카오톡으로 로그인. 실패 시 웹뷰 로그인을 진행하지 않음.
public class GlobalApplication extends Application {
    private static class KakaoSDKAdapter extends KakaoAdapter {
        /**
         * Session Config에 대해서는 default값들이 존재한다.
         * 필요한 상황에서만 override해서 사용하면 됨.
         * @return Session의 설정값.
         */
        @Override
        public ISessionConfig getSessionConfig() {
            return new ISessionConfig() {
                @Override
                public AuthType[] getAuthTypes() {
                    return new AuthType[] {AuthType.KAKAO_LOGIN_ALL};
                }

                @Override
                public boolean isUsingWebviewTimer() {
                    return false;
                }

                @Override
                public boolean isSecureMode() {
                    return false;
                }

                @Override
                public ApprovalType getApprovalType() {
                    return ApprovalType.INDIVIDUAL;
                }

                @Override
                public boolean isSaveFormData() {
                    return true;
                }
            };
        }

        @Override
        public IApplicationConfig getApplicationConfig() {
            return new IApplicationConfig() {
                @Override
                public Context getApplicationContext() {
                    return GlobalApplication.getGlobalApplicationContext();
                }
            };
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();

        KakaoSDK.init(new KakaoSDKAdapter());

        ...
    }
    ...
}