KOSession Class Reference

Inherits from NSObject
Declared in KOSession.h
KOSession.m

Overview

@class KOSession

  appKey

카카오에서 발급한 클라이언트 아이디. (네이티브 앱키)

@property (nonatomic, readonly) NSString *appKey

Discussion

@property appKey

.plist 파일 내에 있는 KAKAO_APP_KEY 값을 읽어옵니다. 해당 키 값이 없거나 빈 문자열인 경우 KOSession 인스턴스를 초기화 할 수 없으며 sharedSession 호출 시 nil을 반환합니다.

Declared In

KOSession.h

  redirectUri

클라이언트 실행을 위한 커스텀 스킴 주소

@property (nonatomic, readonly) NSString *redirectUri

Discussion

@property redirectUri

“kakao${KAKAO_APP_KEY}://oauth” 형식의 OAuth 리다이렉트 URI입니다. .plist 파일에 URL Scheme으로 kakao${KAKAO_APP_KEY} 값을 설정해야 합니다. 설정하지 않을 경우 KOSession 인스턴스를 초기화 할 수 없으며 sharedSession 호출 시 nil을 반환합니다. @seealso appKey

Declared In

KOSession.h

  token

로그인 기반 API 인증에 사용되는 OAuth 토큰

@property (nullable, readonly) KOToken *token

Discussion

@property token

KOSessionTask에 있는 API 사용시 자동으로 Authroization 헤더에 현재 access token을 채워줍니다.
발급 받은 토큰은 NSUserDefaults에 저장되고 앱을 종료하고 다시 시작할 경우 세션이 초기화 될 때(ex. sharedSession 최초 호출) 로드됩니다. 세션 초기화 시 저장된 토큰을 읽어오는데 성공하면 세션은 open 상태가 되며 일반적인 state 변경 상황과 동일하게 KOSessionDidChangeNotification 알림을 전달 받을 수 있습니다.

토큰을 좀 더 안전하게 저장하고 싶을 경우 .plist 파일에 KAKAO_SECURE_MODE를 YES로 설정하여 accessToken과 refreshToken을 암호화 할 수 있습니다. 암호화 방식은 SDK 버전에 따라 다르게 제공될 수 있으며 최신 버전에 사용되고 있는 암호화 방식은 1.5.1 버전에서 마지막으로 수정되었습니다. KAKAO_SECURE_MODE 설정을 바꾸어서 앱을 배포하고 사용자의 기기에서 업데이트 했을 때 다음 케이스에 대해 마이그레이션을 지원합니다.

  • 평문토큰 to 암호문토큰: KAKAO_SECURE_MODE를 사용하지 않다가 활성화시킨 상태로 업데이트한 경우 등
  • 암호문토큰 to 평문토큰: KAKAO_SECURE_MODE를 YES로 사용하다가 NO로 변경한 경우 등
  • (old)암호문토큰 to (new)암호문토큰: KAKAO_SECURE_MODE를 YES로 설정하고 변경하지 않았으나 오래된 버전의 SDK에서 최신(1.5.1이상) SDK로 업데이트한 경우

위 케이스에는 앱을 업데이트하고 재시작해도 로그인이 유지되며 이외 케이스는 토큰을 읽어올 수 없으므로 세션이 닫힌 상태로 초기화됩니다.

Declared In

KOSession.h

  state

인증 상태

@property (nonatomic, readonly) KOSessionState state

Discussion

@property state

Declared In

KOSession.h

  clientSecret

클라이언트 시크릿. AppDelegate의 application:didFinishLaunchingWithOptions: 메소드에서 값을 설정해주어야 한다.

@property (nullable, nonatomic, copy) NSString *clientSecret

Discussion

@property clientSecret

Declared In

KOSession.h

  automaticPeriodicRefresh

access token의 자동 주기적 갱신 여부 설정. 해당 값이 YES일 경우 handleDidBecomeActive 및 특정 시간 주기로 필요시 토큰을 자동 갱신함.

@property (nonatomic, getter=isAutomaticPeriodicRefresh) BOOL automaticPeriodicRefresh

Discussion

@property automaticPeriodicRefresh

값을 설정하면 현재 토큰 상태에 따라 타이머를 설정하거나 갱신이 필요할 경우 바로 갱신합니다. 이 속성 값은 기기에 저장되지 않고 메모리에서만 유지되므로 AppDelegate의 application:didFinishLaunchingWithOptions: 메소드 내에서 설정하는 것을 권장합니다. iOS 특성상 앱이 백그라운드로 내려가거나 suspend 상태가 되면 갱신이 불가능합니다. @seealso token

Declared In

KOSession.h

  presentingViewController

login view 가 present 될 뷰컨트롤러를 설정. 지정하지 않을 경우 SDK 자체적으로 최상단 뷰컨트롤러를 탐색합니다.

@property (nullable, nonatomic, weak) UIViewController *presentingViewController

Discussion

@property presentingViewController

Declared In

KOSession.h

+ sharedSession

현재 session 정보

+ (nullable KOSession *)sharedSession

Declared In

KOSession.h

+ isKakaoAccountLoginCallback:

카카오계정 로그인 callback인지 여부

+ (BOOL)isKakaoAccountLoginCallback:(nullable NSURL *)url

Parameters

url

카카오 계정 인증 요청 code 또는 오류정보를 담은 url

Discussion

카카오계정 로그인 callback인지 여부

Declared In

KOSession.h

+ isKakaoAgeAuthCallback:

카카오계정 연령인증 callback인지 여부

+ (BOOL)isKakaoAgeAuthCallback:(nullable NSURL *)url

Parameters

url

카카오 연령인증 요청결과를 담은 url

Discussion

카카오계정 연령인증 callback인지 여부

Declared In

KOSession.h

+ isKakaoLinkCallback:

KakaoLink 메시지의 Action인지 여부

+ (BOOL)isKakaoLinkCallback:(nullable NSURL *)url

Parameters

url

KakaoLink 메시지의 execparam 을 담은 url

Discussion

KakaoLink 메시지의 Action인지 여부

Declared In

KOSession.h

+ isStoryPostCallback:

KakaoStory Post의 Action인지 여부

+ (BOOL)isStoryPostCallback:(nullable NSURL *)url

Parameters

url

KakaoStory Post 메시지의 execparam 을 담은 url

Discussion

KakaoStory Post의 Action인지 여부

Declared In

KOSession.h

+ handleOpenURL:

url에 포함된 code 정보로 oauth 인증 토큰을 요청한다. 인증 토큰 요청이 완료되면 completionHandler를 실행한다.

+ (BOOL)handleOpenURL:(nullable NSURL *)url

Parameters

url

인증 요청 code 또는 오류 정보(error, error_description)를 담은 url

Discussion

url에 포함된 code 정보로 oauth 인증 토큰을 요청한다. 인증 토큰 요청이 완료되면 completionHandler를 실행한다.

Declared In

KOSession.h

+ handleDidBecomeActive

openWithCompletionHandler로 인증 도중에 빠져나와 앱으로 돌아올때의 인증처리를 취소한다. 보통 applicationDidBecomeActive에서 해당 부분을 호출한다.

+ (void)handleDidBecomeActive

Discussion

openWithCompletionHandler로 인증 도중에 빠져나와 앱으로 돌아올때의 인증처리를 취소한다. 보통 applicationDidBecomeActive에서 해당 부분을 호출한다.

Declared In

KOSession.h

+ handleDidEnterBackground

application이 background 상태로 변경시 알려준다. 보통 applicationDidEnterBackground에서 해당 부분을 호출한다.

+ (void)handleDidEnterBackground

Discussion

application이 background 상태로 변경시 알려준다. 보통 applicationDidEnterBackground에서 해당 부분을 호출한다.

Declared In

KOSession.h

– openWithCompletionHandler:

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

- (void)openWithCompletionHandler:(KOSessionCompletionHandler)completionHandler

Parameters

completionHandler

요청 완료시 실행될 block. 오류 처리와 로그인 완료 작업을 수행한다.

Discussion

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

Declared In

KOSession.h

– openWithCompletionHandler:parameters:

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

- (void)openWithCompletionHandler:(KOSessionCompletionHandler)completionHandler parameters:(nullable NSDictionary<NSString*,NSString*> *)parameters

Parameters

completionHandler

요청 완료시 실행될 block. 오류 처리와 로그인 완료 작업을 수행한다.

parameters

인증코드 요청에 추가로 전달할 파라미터

Discussion

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

Declared In

KOSession.h

– openWithCompletionHandler:authType:

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

- (void)openWithCompletionHandler:(KOSessionCompletionHandler)completionHandler authType:(KOAuthType)authType, ...

Parameters

completionHandler

요청 완료시 실행될 block. 오류 처리와 로그인 완료 작업을 수행한다.

authType

로그인 요청시의 인증 타입(KOAuthType)의 array(var arguments로서 nil-terminated list). 주의) list의 마지막은 꼭 nil로 끝나야함. 예) KOAuthTypeTalk, KOAuthTypeStory, KOAuthTypeAccount, nil

Discussion

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

Declared In

KOSession.h

– openWithCompletionHandler:parameters:authType:

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

- (void)openWithCompletionHandler:(KOSessionCompletionHandler)completionHandler parameters:(nullable NSDictionary<NSString*,NSString*> *)parameters authType:(KOAuthType)authType, ...

Parameters

completionHandler

요청 완료시 실행될 block. 오류 처리와 로그인 완료 작업을 수행한다.

parameters

인증코드 요청에 추가로 전달할 파라미터

authType

로그인 요청시의 인증 타입(KOAuthType)의 array(var arguments로서 nil-terminated list). 주의) list의 마지막은 꼭 nil로 끝나야함. 예) KOAuthTypeTalk, KOAuthTypeStory, KOAuthTypeAccount, nil

Discussion

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

Declared In

KOSession.h

– openWithCompletionHandler:authTypes:

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

- (void)openWithCompletionHandler:(KOSessionCompletionHandler)completionHandler authTypes:(nullable NSArray<NSNumber*> *)authTypes

Parameters

completionHandler

요청 완료시 실행될 block. 오류 처리와 로그인 완료 작업을 수행한다.

authTypes

로그인 요청시의 인증 타입(KOAuthType)의 array.

Discussion

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

Declared In

KOSession.h

– openWithCompletionHandler:parameters:authTypes:

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

- (void)openWithCompletionHandler:(KOSessionCompletionHandler)completionHandler parameters:(nullable NSDictionary<NSString*,NSString*> *)parameters authTypes:(nullable NSArray<NSNumber*> *)authTypes

Parameters

completionHandler

요청 완료시 실행될 block. 오류 처리와 로그인 완료 작업을 수행한다.

parameters

인증코드 요청에 추가로 전달할 파라미터

authTypes

로그인 요청시의 인증 타입(KOAuthType)의 array.

Discussion

기기의 로그인 수행 가능한 카카오 앱에 로그인 요청을 전달한다.

Declared In

KOSession.h

– openWithToken:completionHandler:

이전에 발급 받았던 토큰을 재사용하여 로그인을 시도한다.

- (void)openWithToken:(nullable KOToken *)token completionHandler:(KOSessionCompletionHandler)completionHandler

Parameters

token

로그인 시도할 토큰. 갱신 가능한 토큰이면 로그인에 성공한다.

completionHandler

요청 완료시 실행될 block. 오류 처리와 로그인 완료 작업을 수행한다.

Discussion

이전에 발급 받았던 토큰을 재사용하여 로그인을 시도한다.

Declared In

KOSession.h

– createAccountAndOpenWithCompletion:

새로운 카카오계정을 만들고 로그인을 시도한다.

- (void)createAccountAndOpenWithCompletion:(KOSessionCompletionHandler)completionHandler

Parameters

completionHandler

요청 완료시 실행될 block. 오류 처리와 로그인 완료 작업을 수행한다.

Discussion

새로운 카카오계정을 만들고 로그인을 시도한다.

Declared In

KOSession.h

– updateScopes:completionHandler:

현재 로그인된 사용자에게 새로운 scope이 필요할 경우 지정된 동의항목에 대한 동의창을 노출하고 사용자 동의를 유도합니다. 사용자가 동의 버튼을 누르면 해당 scope이 적용된 새로운 토큰으로 세션을 갱신합니다.

- (void)updateScopes:(nullable NSArray<NSString*> *)scopes completionHandler:(KOSessionCompletionHandler)completionHandler

Parameters

scopes

요청할 scope 목록

completionHandler

요청 완료시 실행될 block. 오류 처리와 갱신 완료 작업을 수행한다.

Discussion

@method updateScopes:completionHandler:

Declared In

KOSession.h

– logoutAndCloseWithCompletionHandler:

현재 기기에서만 로그아웃한다. 발급 받았던 토큰은 만료된다.

- (void)logoutAndCloseWithCompletionHandler:(KOCompletionSuccessHandler)completionHandler

Parameters

completionHandler

요청 완료시 실행될 block.

Discussion

현재 기기에서만 로그아웃한다. 발급 받았던 토큰은 만료된다.

Declared In

KOSession.h

– close

인증 토큰을 세션 객체에서 제거한다.

- (void)close

Discussion

인증 토큰을 세션 객체에서 제거한다.

Declared In

KOSession.h

– isOpen

인증되어 있는지 여부. [token canRefresh]와 동일한 결과를 리턴합니다.

- (BOOL)isOpen

Discussion

인증되어 있는지 여부. [token canRefresh]와 동일한 결과를 리턴합니다.

Declared In

KOSession.h

– refreshAccessTokenWithCompletionHandler:

세션을 유효한 access token으로 유지하기 위해 서버로 토큰을 요청하고 현재 세션을 갱신한다.

- (void)refreshAccessTokenWithCompletionHandler:(KOSessionCompletionHandler)completionHandler

Parameters

completionHandler

갱신 완료시 실행될 block.

Discussion

세션을 유효한 access token으로 유지하기 위해 서버로 토큰을 요청하고 현재 세션을 갱신한다.

Declared In

KOSession.h

– showAgeAuthWithAuthLevel:completionHandler:

새로운 연령 인증이 필요할 경우 사용자에게 연령 인증관련 창을 띄워서 연령 인증을 유도합니다. 제휴를 통해 권한이 부여된 특정 앱에서만 호출 가능합니다.

- (void)showAgeAuthWithAuthLevel:(nullable KOAgeAuthQueryStringBuilder *)ageAuthQueryStringBuilder completionHandler:(KOCompletionSuccessHandler)completionHandler

Discussion

새로운 연령 인증이 필요할 경우 사용자에게 연령 인증관련 창을 띄워서 연령 인증을 유도합니다. 제휴를 통해 권한이 부여된 특정 앱에서만 호출 가능합니다.

Declared In

KOSession.h