페이지 이동경로
  • 문서>
  • 카카오톡 인증 서비스>
  • K2100: 인증 로그인

카카오톡 인증 서비스

K2100: 인증 로그인

이 문서는 카카오톡 인증 서비스의 K2100 인증 로그인 API 사용법을 안내합니다.

시작하기 전에

기능 소개

K2100 인증 로그인은 소셜 로그인 서비스인 카카오 로그인과 카카오톡 인증 서비스의 전자서명이 결합된 형태의 로그인 서비스입니다.

사용자는 앱투앱(App to App) 또는 채널 메시지를 통해 카카오톡에서 간편하게 카카오톡 인증 로그인을 수행할 수 있습니다. 사용자는 카카오계정 또는 카카오톡에 연결된 카카오계정으로 로그인한 뒤, 이용기관 앱에 대한 개인정보제공 및 서비스 약관에 동의합니다. 이어 카카오톡의 카카오 인증서로 로그인에 대한 전자서명을 수행합니다.

이용기관은 사용자 비교 및 검증 용도의 서명자 정보서명자 정보 가져오기로 제공받을 수 있습니다. 이밖에 카카오톡 인증 로그인 과정에서 사용자로부터 동의받은 개인정보 항목을 카카오로부터 제공받을 수 있습니다. 이를 통해 별도의 사용자 정보 입력 과정이나 서비스 약관 동의를 거치지 않고도 회원가입 및 로그인 처리를 할 수 있습니다. 개인정보제공 및 서비스 약관 동의 화면 구성을 참고합니다.

카카오톡 인증 로그인은 사용자가 카카오톡 앱을 실행시키고 서명하는 '앱투앱(App to app) 방식', 사용자의 카카오톡 앱으로 서명 요청 메시지를 보내는 '채널 메시지 방식' 두 가지 인증 방식을 제공합니다. 인증 방식에 대한 정보는 카카오톡 인증 로그인을 참고합니다.

카카오톡 인증 서비스 API는 서버간 연동(Server to Server)을 원칙으로 합니다.

Kakao SDK 설치

카카오톡 인증 로그인은 JavaScript, Android, iOS용 Kakao SDK를 통해 제공합니다. Kakao SDK를 사용해 보다 쉽게 카카오톡 인증 로그인을 구현할 수 있으며, 이밖에 카카오에서 제공하는 다양한 API도 손쉽게 이용할 수 있습니다. Kakao SDK 설치 및 설정 안내는 아래를 참고합니다.

JavaScript SDK

아래 순서로 Kakao SDK for JavaScript(이하 JavaScript SDK)의 설정, 설치, 초기화를 완료합니다.

  1. 플랫폼 등록
  2. 설치
  3. 초기화
주의

JavaScript SDK 2.4.0 버전부터 카카오톡 인증 로그인 함수가 Kakao.Auth.authorize()에서 Kakao.Auth.authorizeForCert()로 변경되었습니다.

Android SDK

아래 순서로 Kakao SDK for Android(이하 Android SDK) 설치 및 설정을 완료합니다.

  1. 설치
  2. 플랫폼 등록
  3. 인터넷 사용 권한 설정
  4. Java 8 사용 설정
  5. 키 해시 등록
  6. Redirect URI 설정
주의

Android SDK 2.16.0 버전부터 카카오톡 인증 로그인을 제공하는 모듈이 v2-user에서 v2-cert로 변경되었습니다. v2-cert 모듈은 ReactiveX를 지원하지 않습니다.

iOS SDK

아래 순서로 Kakao SDK for iOS(이하 iOS SDK) 설치 및 설정을 완료합니다.

  1. 설치
  2. 플랫폼 등록
  3. 앱 실행 허용 목록 설정
  4. URL Schemes 설정
  5. 카카오톡으로 로그인을 위한 설정

iOS SDK 설치 및 설정 완료 후, 아래와 같이 이용기관 앱에서 Cert를 포함해 필요한 모듈을 사용하도록 설정해야 합니다.

import KakaoSDKCommon
import KakaoSDKAuth
import KakaoSDKUser
import KakaoSDKCert
주의

iOS SDK 2.17.0 버전부터 카카오톡 인증 로그인을 제공하는 모듈이 User에서 Cert로 변경되었습니다. Cert 모듈은 ReactiveX를 지원하지 않습니다.

카카오톡 인증 로그인 과정

카카오톡 인증 서비스의 카카오톡 인증 로그인은 OAuth 2.0 기반으로 사용자를 인증하고 인가 코드 및 토큰을 발급합니다. 아래는 카카오톡 인증 로그인의 진행 과정을 간략하게 표현한 시퀀스 다이어그램(Sequence Diagram)입니다.

카카오톡 인증 로그인 과정

위 과정을 요약하면 다음과 같습니다.

  1. 사용자가 이용기관 서비스에서 카카오톡 인증 로그인을 요청합니다.
  2. 이용기관이 카카오에 카카오톡 인증 로그인을 위한 인가 코드 받기를 요청합니다.
    • 서명 원문을 signData 파라미터로 전달할 수 있습니다.
    • 필요한 서명자 정보identifyItems 파라미터로 지정할 수 있습니다.
  3. 카카오는 카카오톡 앱 실행 스킴(Scheme)을 실행하거나, 전자서명 대기화면을 출력하고 채널 메시지를 발송합니다.
  4. 사용자는 카카오톡에서 이용기관 앱에 대한 개인정보제공 및 서비스 약관 동의를 수행한 뒤 전자서명합니다.
  5. 카카오는 이용기관에 인가 코드를 반환합니다.
  6. 이용기관은 인가 코드로 토큰을 요청합니다.
  7. 카카오는 이용기관에 토큰 및 전자서명 검증을 위한 접수번호인 tx_id를 반환합니다.
  8. 이용기관은 전자서명 검증하기 API를 호출해 서명 원문인 signData에 대한 전자서명 데이터 전문을 받아 검증하고, 서명자 정보 가져오기 API를 요청해 가입 및 로그인 처리를 완료합니다.

위 과정 중 4번 단계에는 5분의 유효일시가 설정되어 있습니다. 사용자가 유효일시 이내에 인증을 완료하지 않을 경우, 기존 요청은 만료 처리되므로 인가 코드 받기를 다시 요청해야 합니다.

2번의 인가 코드 받기와 6번의 토큰 받기는 Kakao SDK for Android 또는 iOS 사용 시 한 번의 메서드 호출로 처리됩니다. 자세한 사항은 각 플랫폼 개발 가이드를 참고합니다.

사용자가 카카오톡에서 전자서명하는 과정은 아래 이미지를 참고합니다.

App to App 로그인 과정 채널 메시지 방식 로그인 과정

개인정보제공 및 서비스 약관 동의 화면 구성

개인정보제공 동의항목은 이용기관 앱에 설정된 동의항목서비스 약관에 따라 구성됩니다. 서비스 약관은 카카오싱크를 이용 중인 앱에만 제공됩니다. 동의항목에 대한 자세한 안내는 인가를, 서비스 약관에 대한 자세한 안내는 카카오싱크를 참고합니다.

주의

사용자 비교 및 검증을 위한 서명자 정보서명자 정보 가져오기로 별도 제공합니다. 서명자 정보를 제외하고 필요한 개인정보제공 동의항목만 이용기관 앱에 설정해야 합니다.

아래는 개인정보제공 및 서비스 약관 동의 화면의 예시입니다.

개인정보제공 및 서비스 약관 동의 화면

사용자 인증 요청 안내문

채널 메시지 및 전자서명 인증 요청 정보 화면의 내용은 요청구분, 요청기관, 기기, 유효일시, 서비스 요청기관 고객센터로 구성됩니다. 각 항목의 값은 이용기관 등록 정보로 자동으로 지정되며, 이용기관 등록 정보를 변경하려면 계약을 체결한 딜러사를 통해 수정 요청해야 합니다. 아래 예시와 설명을 참고합니다.

사용자 인증 요청 안내문 구성 예시
영역 설명
🅐 요청구분 카카오톡 인증 로그인으로 고정
🅑 요청기관 등록된 이용기관 이름
🅒 기기 카카오톡 인증 로그인을 요청한 사용자 기기의 OS 정보
🅓 유효일시 카카오톡 인증 로그인을 요청한 시각으로부터 5분(300초) 후 시각
🅔 서비스 요청기관 고객센터 등록된 이용기관 고객센터 연락처

JavaScript SDK를 통한 카카오톡 인증 로그인의 전자서명 대기화면 동작

지원 방식

사용자 기기 앱투앱 방식 지원 채널 메시지 방식 지원
Windows 및 MacOS X O
Android O O
iOS O O

동작

Windows 및 MacOS
  • ID 및 비밀번호 입력을 통한 카카오계정 로그인만 가능
    1. 카카오계정 로그인 후, 카카오톡 인증 로그인을 위한 채널 메시지가 해당 카카오계정과 연결된 카카오톡으로 발송됨
    2. 사용자는 카카오톡에서 채널 메시지를 통해 이용기관 앱에 대한 제3자정보제공 및 서비스 약관 동의 후 전자서명을 수행
Android 및 iOS
  • 카카오톡 앱이 설치돼 있는 경우: 카카오톡을 통한 간편로그인 가능
    1. 사용자는 카카오톡에서 이용기관 앱에 대한 제3자정보제공 및 서비스 약관 동의 후 전자서명 수행
    2. Android는 전자서명 완료 후 이용기관 서비스로 이동 지원, iOS는 사용자가 직접 이용기관 서비스로 이동해야 함
  • 카카오톡 앱이 설치돼 있지 않은 경우: ID 및 비밀번호 입력을 통한 카카오계정 로그인만 가능
    • 해당 카카오계정과 연결된 카카오톡이 있을 경우, 해당 카카오톡으로 카카오톡 인증 로그인을 위한 채널 메시지가 발송됨
    • 해당 카카오계정에 연결된 카카오톡이 없을 경우, 카카오톡 인증 로그인 서비스 이용 불가

전자서명 대기화면 및 전자서명 요청 채널 메시지 예시 화면

전자서명 요청 채널 메시지 예시 화면

전자서명 검증

카카오톡 인증 로그인 상품의 경우, 전자서명의 서명 원문은 요청 시 전달된 signData 값입니다. 카카오톡 인증 로그인의 사용자 전자서명을 검증하려면 REST API로 제공되는 전자서명 검증하기 API를 사용해야 합니다. 해당 API는 카카오톡 인증 상품을 이용하는 경우에만 호출할 수 있으며, 자세한 사항은 전자서명 검증하기를 참고합니다.

주의

카카오톡 인증 서비스에서 제공하는 연계정보(CI)는 사용자 비교 및 검증 용도로만 사용할 수 있습니다. 전자서명 검증하기 API를 통해 제공받은 CI를 이용기관의 CI와 비교해 올바른 사용자인지 검증해야 합니다. CI 비교 및 검증은 반드시 이용기관 서버에서 수행해야 합니다.

연결 끊기

사용자가 이용기관 서비스에서 카카오 로그인 연동 해제 또는 탈퇴 시, 연결 끊기 API를 호출해 이용기관 앱과 사용자의 연결을 끊어야 합니다.

연결 끊기 API 호출 없이 이용기관 서비스에서의 연동 해제 처리만 이뤄질 경우, 사용자가 다시 카카오톡 인증 로그인을 수행할 때 개인정보제공 및 서비스 약관 동의 절차를 거치지 않아 이용에 불편을 겪거나 문제가 발생할 수 있습니다. 자세한 사항은 연결을 참고합니다.

연결 끊기 API는 REST API 또는 Kakao SDK를 통해 호출할 수 있습니다. 다음 개발 가이드를 참고합니다.

JavaScript

Kakao SDK for JavaScript(이하 JavaScript SDK)를 사용해 카카오톡 인증 로그인을 구현하려면 인가 코드 받기, 토큰 받기를 순서대로 호출합니다.

1. 인가 코드 받기

인가 코드 받기는 사용자로부터 이용기관 앱에 대한 개인정보제공 및 서비스 약관 동의를 받고 전자서명을 요청하여, 토큰 발급에 필요한 인가 코드를 발급 받는 API입니다.

Kakao.Auth.authorizeForCert()로 요청합니다. signData 파라미터로 서명 원문을 전달합니다. 전자서명 검증하기를 통해 전자서명 데이터 전문을 받을 수 있습니다.

필요에 따라 추가 파라미터를 사용할 수 있습니다. 서명자 정보가 필요한 경우, identifyItems 파라미터로 필요한 항목을 지정합니다. 카카오톡 인증 로그인 완료 후, 서명자 정보 가져오기로 서명자 정보를 제공받을 수 있습니다.

요청이 성공하면 사용자의 웹 브라우저에 전자서명 대기화면이 출력되고, 이용기관이 이용하는 인증 방식에 따라 카카오톡 앱이 실행되거나 채널 메시지가 전송됩니다. JavaScript SDK를 통한 카카오톡 인증 로그인 요청 시, 사용자 환경에 따른 동작은 JavaScript SDK를 통한 카카오톡 인증 로그인의 전자서명 대기화면 동작을 참고합니다.

전자서명 대기화면에서 사용자가 전자서명 대기화면에서 [다음에 하기]를 눌러 카카오톡 인증 로그인을 취소한 경우에는 에러 응답이 반환되며, 다시 인가 코드 받기를 요청해야 합니다.

사용자가 유효일시 이내에 동의 및 전자서명을 완료하면 인증 대기 화면은 인가 코드와 함께 redirectUri로 HTTP 302 리다이렉트(Redirect)됩니다. 이용기관 서버에서 인가 코드를 사용해 토큰 받기를 요청하여 카카오톡 인증 로그인을 완료할 수 있습니다.

요청 실패 시 문제 해결에서 에러 코드 정보를 확인합니다.

파라미터
이름 타입 설명 필수
redirectUri String 인가 코드를 받을 URI O
settleId String 정산 ID, ID 종류 참고 O
signData String 서명 원문 O
identifyItems String 서명자 정보 가져오기 응답으로 확인할 서명자 정보
다음 중 하나 이상의 값 사용 가능, 여러 개 사용 시 쉼표(,)로 구분
ci: 연계정보
name: 이름
birthday: 생일
phone_number: 전화번호
gender: 성별
(예: ci,name,birthday)
X
state String 카카오 로그인 과정 중 동일한 값을 유지하는 임의의 문자열(정해진 형식 없음)
Cross-Site Request Forgery(CSRF) 공격으로부터 카카오 로그인 요청을 보호하기 위해 사용
각 사용자의 로그인 요청에 대한 state 값은 고유해야 함
인가 코드 요청, 인가 코드 응답, 토큰 발급 요청의 state 값 일치 여부로 요청 및 응답 유효성 확인 가능
X
prompt String 동의 화면 요청 시 추가 상호작용을 요청하고자 할 때 전달하는 파라미터
쉼표(,)로 구분된 문자열 값 목록으로 전달

다음 값 사용 가능:
login: 기존 사용자 인증 여부와 상관없이 사용자에게 카카오계정 로그인 화면을 출력하여 다시 사용자 인증을 수행하고자 할 때 사용, 카카오톡 인앱 브라우저에서는 이 기능이 제공되지 않음
create: 사용자에게 카카오계정 신규 가입 후 로그인하도록 하기 위해 사용, 카카오계정 가입 페이지로 이동 후, 카카오계정 가입 완료 후 동의 화면 출력
select_account: 카카오계정 간편로그인을 요청할 때 사용, 브라우저에 카카오계정 로그인 세션이 있을 경우 자동 로그인 또는 계정 선택 화면 출력
X
scope String 추가 항목 동의 받기 요청 시 사용
추가 동의 받을 동의항목 ID 목록, 하나의 문자열에 여러 개의 ID를 쉼표(,)로 구분하여 전달
동의항목 ID는 [내 애플리케이션] > [카카오 로그인] > [동의항목] 참고
(예: 'account_email,gender')
X
throughTalk Boolean 간편로그인 사용 여부(기본값: true) X

* prompts: Deprecated, 2.3.0 버전부터 prompt로 변경

응답

인가 코드 받기 요청의 응답은 HTTP 302 리다이렉트되어, redirect_uriGET 요청으로 전달됩니다. 아래 쿼리 파라미터를 포함합니다.

쿼리 파라미터
이름 타입 설명 필수
code String 토큰 받기 요청에 필요한 인가 코드 O
state String CSRF 공격을 차단하기 위해 사용되는 파라미터로, 요청 시 보낸 state 값과 동일한 state 값이 전달됨 X
error String 인증 실패 시 반환되는 에러 코드 X
error_description String 인증 실패 시 반환되는 에러 메시지 X

예제

요청: 기본적인 카카오톡 인증 로그인 요청
Kakao.Auth.authorizeForCert({
  redirectUri: '${REDIRECT_URI}',
  settleId: '${SETTLE_ID}',
  signData: '${SIGN_DATA}',
  identifyItems: 'ci,name,birthday,phone_number,gender',
});
요청: prompt에 login 값을 포함한 경우
Kakao.Auth.authorizeForCert({
  redirectUri: '${REDIRECT_URI}',
  settleId: '${SETTLE_ID}',
  signData: '${SIGN_DATA}',
  identifyItems: 'ci,name,birthday,phone_number,gender',
  prompt: 'login',
});

2. 토큰 받기

토큰 받기는 인가 코드 받기의 결과로 받은 인가 코드를 사용해 토큰을 받아 사용자 인증을 완료하는 API입니다. JavaScript SDK 사용 시, 토큰 받기는 이용기관 서버에서 REST API로 요청해야 합니다. 자세한 요청 방법은 토큰 받기를 참고합니다.

카카오톡 인증 로그인의 경우, 토큰 받기 응답은 tx_id를 추가로 포함합니다. tx_id는 REST API를 통한 전자서명 검증하기에 사용합니다. 아래는 응답 상세 정보 및 예제입니다.

요청 실패 시 문제 해결에서 에러 코드 정보를 확인합니다.

응답

본문
이름 타입 설명 필수
token_type String 토큰 타입, bearer로 고정 O
access_token String 사용자 액세스 토큰 값 O
expires_in Integer 액세스 토큰 만료 시간(초) O
refresh_token String 사용자 리프레시 토큰 값 O
refresh_token_expires_in Integer 리프레시 토큰 만료 시간(초) O
scope String 인증된 사용자의 정보 조회 권한 범위
범위가 여러 개일 경우, 공백으로 구분
X
tx_id String 전자서명 접수번호
전자서명 검증하기 API 요청 시 사용
O

예제

{
    "access_token": "Lj7QYZ39ieSlbon5a0JGPzey90vT3YkKTv4-9grKJuoAAAF7d9SaqQ",
    "token_type": "bearer",
    "refresh_token": "UHHQnTq8-gfgJTnQNAfvJWSnSvYRCyDS9yJbNArKJuoAAAF7d9SapA",
    "expires_in": 7199,
    "scope": "age_range birthday account_email profile_image talk_message gender profile_nickname friends",
    "tx_id": "01c6e5062c-81e1-4f07-aa36-9671bb1e7ae2",
    "refresh_token_expires_in": 86399
}

Android

Kakao SDK for Android(이하 Android SDK)를 사용해 카카오톡 인증 로그인을 요청하려면 CertApiClient가 제공하는 카카오톡 인증 로그인 전용 메서드를 사용합니다.

Android SDK의 경우, 인증 방식별로 메서드가 분리되어 있습니다. 다음 표를 참고하여 이용 중인 인증 방식에 맞는 메서드를 호출합니다.

이름 설명
certLoginWithKakaoTalk() 앱투앱(App to app) 인증 방식의 카카오톡 인증 로그인 요청
isKakaoTalkLoginAvailable() 메서드로 카카오톡 실행 가능 여부 확인 후 호출 가능
certLoginWithKakaoAccount() 채널 메시지 방식의 카카오톡 인증 로그인 요청

각 메서드 호출 시 signData 파라미터로 서명 원문을 전달합니다. 전자서명 검증하기를 통해 전자서명 데이터 전문을 받을 수 있습니다.

필요에 따라 추가 파라미터를 사용할 수 있습니다. 서명자 정보가 필요한 경우, identifyItems 파라미터로 필요한 항목을 지정합니다. 카카오톡 인증 로그인 완료 후, 서명자 정보 가져오기로 서명자 정보를 제공받을 수 있습니다.

두 메서드의 파라미터 구성은 동일하며, 다음 파라미터 정보와 예제를 참고합니다.

파라미터
이름 타입 설명 필수
context Context context O
certType CertType 상품 코드, K2100 O
settleId String 정산 ID, ID 종류 참고 O
signData String 서명 원문 O
identifyItems List<IdentifyItem> 서명자 정보 가져오기 응답으로 확인할 서명자 정보
다음 중 하나 이상의 값 사용 가능, 여러 개 사용 시 쉼표(,)로 구분
CI: 연계정보
NAME: 이름
BIRTHDAY: 생일
PHONE_NUMBER: 전화번호
GENDER: 성별
X
prompts List<Prompt> 동의 화면 요청 시 추가 상호작용을 요청하고자 할 때 전달하는 파라미터

다음 값 사용 가능:
LOGIN: 기존 사용자 인증 여부와 상관없이 사용자에게 카카오계정 로그인 화면을 출력하여 다시 사용자 인증을 수행하고자 할 때 사용, 카카오톡 인앱 브라우저에서는 이 기능이 제공되지 않음
CREATE: 사용자에게 카카오계정 신규 가입 후 로그인하도록 하기 위해 사용, 카카오계정 가입 페이지로 이동 후, 카카오계정 가입 완료 후 동의 화면 출력
SELECT_ACCOUNT: 카카오계정 간편로그인을 요청할 때 사용, 브라우저에 카카오계정 로그인 세션이 있을 경우 자동 로그인 또는 계정 선택 화면 출력
X
nonce String OpenID Connect를 통해 ID 토큰을 함께 발급받을 경우, ID 토큰 재생 공격을 방지하기 위해 사용
ID 토큰 유효성 검증 시 대조할 임의의 문자열(정해진 형식 없음)
X
예제: App to App 방식
// 앱투앱 방식 카카오톡 인증 로그인
CertApiClient.instance.certLoginWithKakaoTalk(
    context, 
    CertType.K2100, 
    signData = "${SIGN_DATA}",
    identifyItems = listOf(IdentifyItem.CI, IdentifyItem.NAME, IdentifyItem.BIRTHDAY, IdentifyItem.PHONE_NUMBER, IdentifyItem.GENDER),
    settleId = "${SETTLE_ID}"
) { certTokenInfo, error ->
    if (error != null) {
        Log.e(TAG, "로그인 실패", error)
    }
    else if (certTokenInfo != null) {        
        Log.i(TAG, "로그인 성공 ${certTokenInfo.token.accessToken} ${certTokenInfo.txId}")    
    }
}
예제: 채널 메시지 방식
// 카카오계정으로 카카오톡 인증 로그인
CertApiClient.instance.certLoginWithKakaoAccount(
    context, 
    CertType.K2100, 
    signData = "${SIGN_DATA}", 
    identifyItems = listOf(IdentifyItem.CI, IdentifyItem.NAME, IdentifyItem.BIRTHDAY, IdentifyItem.PHONE_NUMBER, IdentifyItem.GENDER),
    settleId = "${SETTLE_ID}"
) { certTokenInfo, error ->
    if (error != null) {
        Log.e(TAG, "로그인 실패", error)
    }
    else if (certTokenInfo != null) {        
        Log.i(TAG, "로그인 성공 ${certTokenInfo.token.accessToken} ${certTokenInfo.txId}")    
    }
}

요청 성공 시, 사용자는 카카오톡에서 인증을 수행합니다.

사용자가 유효일시 이내에 카카오톡에서 동의 및 전자서명을 완료하면, Android SDK가 인가 코드를 받아 토큰 받기를 요청하는 과정을 내부적으로 수행하고 CertTokenInfo 객체를 응답으로 반환합니다. CertTokenInfo는 토큰과 함께 전자서명 접수번호인 txId를 포함합니다.

CertTokenInfo
이름 타입 설명 필수
token OAuthToken 카카오 로그인을 통해 발급 받은 토큰 및 토큰 정보 O
txId String 전자서명 접수번호
전자서명 검증하기 API 요청 시 사용
O

요청 실패 시 문제 해결에서 에러 코드 정보를 확인합니다.

iOS

Kakao SDK for iOS(이하 iOS SDK)를 사용해 카카오톡 인증 로그인을 요청하려면 CertApi가 제공하는 카카오톡 인증 로그인 전용 메서드를 사용합니다.

iOS SDK의 경우, 인증 방식별로 메서드가 분리되어 있습니다. 다음 표를 참고하여 이용 중인 인증 방식에 맞는 메서드를 호출합니다.

이름 설명
certLoginWithKakaoTalk() 앱투앱(App to app) 인증 방식의 카카오톡 인증 로그인 요청
isKakaoTalkLoginAvailable() 메서드를 통해 카카오톡 실행 가능 여부 확인 후 호출 가능
certLoginWithKakaoAccount() 채널 메시지 방식의 카카오톡 인증 로그인 요청

각 메서드 호출 시 signData 파라미터로 서명 원문을 전달합니다. 전자서명 검증하기를 통해 전자서명 데이터 전문을 받을 수 있습니다.

필요에 따라 추가 파라미터를 사용할 수 있습니다. 서명자 정보가 필요한 경우, identifyItems 파라미터로 필요한 항목을 지정합니다. 카카오톡 인증 로그인 완료 후, 서명자 정보 가져오기로 서명자 정보를 제공받을 수 있습니다.

두 메서드의 파라미터 구성은 동일하며, 다음 파라미터 정보와 예제를 참고합니다.

파라미터
이름 타입 설명 필수
certType CertType 상품 코드, K2100 O
signData String 서명 원문 O
identifyItems [IdentifyItem] 서명자 정보 가져오기 응답으로 확인할 서명자 정보
다음 중 하나 이상의 값 사용 가능, 여러 개 사용 시 쉼표(,)로 구분
CI: 연계정보
Name: 이름
Birthday: 생일
PhoneNumber: 전화번호
GENDER: 성별
X
settleId String 정산 ID, ID 종류 참고 O
prompts [Prompt] 동의 화면 요청 시 추가 상호작용을 요청하고자 할 때 전달하는 파라미터

다음 값 사용 가능:
.Login: 기존 사용자 인증 여부와 상관없이 사용자에게 카카오계정 로그인 화면을 출력하여 다시 사용자 인증을 수행하고자 할 때 사용, 카카오톡 인앱 브라우저에서는 이 기능이 제공되지 않음
.Create: 사용자에게 카카오계정 신규 가입 후 로그인하도록 하기 위해 사용, 카카오계정 가입 페이지로 이동 후, 카카오계정 가입 완료 후 동의 화면 출력
.SelectAccount: 카카오계정 간편로그인을 요청할 때 사용, 브라우저에 카카오계정 로그인 세션이 있을 경우 자동 로그인 또는 계정 선택 화면 출력
X
nonce String OpenID Connect를 통해 ID 토큰을 함께 발급받을 경우, ID 토큰 재생 공격을 방지하기 위해 사용
ID 토큰 유효성 검증 시 대조할 임의의 문자열(정해진 형식 없음)
X
예제: 앱투앱 방식
if (UserApi.isKakaoTalkLoginAvailable()) {
    CertApi.shared.certLoginWithKakaoTalk(certType: .K2100, 
                                          signData: "${SIGN_DATA}",
                                          identifyItems: [.CI, .Name, .Birthday, .PhoneNumber .Gender],
                                          settleId:"${SETTLE_ID}") { (certTokenInfo, error) in
        if let error = error {
            print(error)
        }
        else {
            // 성공 시 동작 구현
            _ = certTokenInfo.oauthToken
            _ = certTokenInfo.txId
        }
    }
}
예제: 채널 메시지 방식
CertApi.shared.certLoginWithKakaoAccount(certType: .K2100, 
                                         signData: "${SIGN_DATA}", 
                                         identifyItems: [.CI, .Name, .Birthday, .PhoneNumber .Gender],
                                         settleId:"${SETTLE_ID}") { (certTokenInfo, error) in
    if let error = error {
        print(error)
    }
    else {
        // 성공 시 동작 구현
        _ = certTokenInfo.oauthToken
        _ = certTokenInfo.txId
    }
}

요청 성공 시, 사용자는 카카오톡에서 인증을 수행합니다.

사용자가 유효일시 이내에 카카오톡에서 동의 및 전자서명을 완료하면, iOS SDK가 인가 코드를 받아 토큰 받기를 요청하는 과정을 내부적으로 수행하고 CertTokenInfo 객체를 응답으로 반환합니다. CertTokenInfo는 토큰과 함께 전자서명 접수번호인 txId를 포함합니다.

CertTokenInfo
이름 타입 설명 필수
token OAuthToken 카카오 로그인을 통해 발급 받은 토큰 및 토큰 정보 O
txId String 전자서명 접수번호
전자서명 검증하기 API 요청 시 사용
O

요청 실패 시 문제 해결에서 에러 코드 정보를 확인합니다.

더 보기