사이드 메뉴
커뮤니케이션
API 제공
어드민 API
REST API
이 문서는 카카오 또는 공동체 서비스용 카카오 로그인 REST API 사용법을 안내합니다.
| 권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
|---|---|---|---|
| - | REST API 키 카카오 로그인 활성화 리다이렉트 URI 동의항목 OpenID Connect 활성화(선택) 간편가입(선택) | - | 필요: 서비스 가입 및 이용 시 필요한 사용자 정보 및 접근권한 |
인가 코드 요청은 카카오 로그인을 시작하는 단계로써, 카카오 로그인 동의 화면을 호출하고, 사용자 동의를 거쳐 인가 코드 발급을 요청하는 API입니다.
자세한 안내는 인가 코드 요청을 참고합니다.
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| client_id | String | 서비스 앱 REST API 키 앱 관리 페이지의 [앱] > [플랫폼 키] > REST API 키에서 확인 가능 | O |
| redirect_uri | String | 인가 코드를 전달받을 리다이렉트 URI | O |
| response_type | String | code로 고정 | O |
| scope | String | 동의항목 추가 동의 요청 시 사용 추가 동의 받을 항목의 키, 카카오계정 정보 참고 앱 관리 페이지의 [카카오 로그인] > [동의항목]에서 해당 동의항목의 ID 값 확인해 사용 쉼표(,)로 구분해 여러 개 전달 가능 주의: OpenID Connect를 사용하는 앱의 경우, scope 파라미터 값에 openid를 반드시 포함해야 함, 미포함 시 ID 토큰이 재발급되지 않음참고: scope 파라미터 | X |
| prompt | String | 동의 화면 요청 시 추가 상호작용을 요청하고자 할 때 전달하는 파라미터 쉼표(,)로 구분된 문자열 값 목록으로 전달 아래 값 사용 가능:
참고: 추가 기능 | X |
| login_hint | String | 로그인 힌트 요청 시 사용 카카오계정 로그인 페이지의 ID란에 자동 입력할 값 참고: 카카오계정 로그인 시 이메일, 전화번호, 카카오메일 ID를 ID에 입력해 로그인 가능 | X |
| service_terms | String | 서비스 약관 선택해 동의 요청 시 사용 동의 받을 약관 태그, 쉼표(,)로 묶어 하나의 문자열로 전달 | X |
| channel_public_id | String | 채널 선택해 동의 요청 시 사용 동의 화면에 보여주도록 선택할 카카오톡 채널 프로필 ID, 쉼표(,)로 묶어 하나의 문자열로 전달 (예: channel_public_id=pf_1,pf_2)1개 이상, 전달된 카카오톡 채널 프로필 ID가 2개를 초과할 경우에는 2개까지만 노출 각 카카오톡 채널 추가 동의항목은 파라미터에 기재한 순서대로 노출됨 참고: 카카오톡 채널 프로필 ID 확인 방법 | X |
| state | String | 카카오 로그인 과정 중 동일한 값을 유지하는 임의의 문자열(정해진 형식 없음) Cross-Site Request Forgery(CSRF) 공격으로부터 카카오 로그인 요청을 보호하기 위해 사용 각 사용자의 로그인 요청에 대한 state 값은 고유해야 함인가 코드 요청, 인가 코드 응답, 토큰 발급 요청의 state 값 일치 여부로 요청 및 응답 유효성 확인 가능 | X |
| nonce | String | OpenID Connect으로 ID 토큰을 함께 발급받을 경우, ID 토큰 재생 공격을 방지하기 위해 사용 ID 토큰 유효성 검증 시 대조할 임의의 문자열(정해진 형식 없음) | X |
요청
https://kauth.kakao.com/oauth/authorize?response_type=code&client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}
응답: 사용자가 [동의하고 계속하기] 선택, 인가 코드 발급
HTTP/1.1 302Content-Length: 0Location: ${REDIRECT_URI}?code=${AUTHORIZE_CODE}
응답: 로그인 취소
HTTP/1.1 302Content-Length: 0Location: ${REDIRECT_URI}?error=access_denied&error_description=User%20denied%20access
인가 코드를 받은 뒤, 인가 코드로 액세스 토큰과 리프레시 토큰을 발급받는 API입니다. 인가 코드 요청만으로는 카카오 로그인이 완료되지 않으며, 토큰 요청까지 마쳐야 카카오 로그인을 정상적으로 완료할 수 있습니다.
자세한 안내와 예제는 토큰 요청을 참고합니다.
카카오 로그인 완료 시 발급받은 액세스 토큰으로 사용자 정보 조회를 요청해 회원 가입에 필요한 사용자 정보를 제공받을 수 있습니다. 일부 사용자 정보는 동의항목 설정 및 사용자 동의가 필요합니다.
인가 코드 요청 시 사용할 수 있는 추가 기능을 안내합니다.
사용자가 첫 카카오 로그인 시 동의 화면에서 동의하지 않았지만, 서비스 이용 중 추가로 동의해야 하는 항목을 동적으로 동의 요청하는 기능입니다.
자세한 안내와 예제는 동의항목 추가 동의 요청을 참고합니다.
사용자가 이미 서비스에 가입한 상태일 경우 별도의 카카오 로그인 화면을 거치지 않고 인가 코드를 발급받는 기능입니다.
자세한 안내와 예제는 카카오톡에서 자동 로그인을 참고합니다.
카카오싱크 서비스에서 동의하지 않은 약관을 선택해 사용자에게 동의 요청하는 기능입니다.
자세한 안내와 예제는 서비스 약관 선택해 동의 요청을 참고합니다.
카카오싱크 간편가입 화면에서 상황에 따라 카카오톡 채널을 선택해 노출하는 기능입니다.
자세한 안내와 예제는 채널 선택해 동의 요청을 참고합니다.
ID 토큰은 토큰 요청 시 함께 발급됩니다. 단, 동의항목 추가 동의 요청 시 scope 파라미터에 openid 값을 추가 전달해야 합니다.
자세한 안내와 예제는 토큰 요청, 동의항목 추가 동의 요청을 참고합니다.
기존 로그인 여부와 상관없이 로그인은 서비스의 필요에 따라 사용자 인증을 다시 수행하고자 할 때 사용하는 추가 기능입니다.
자세한 안내와 예제는 인가 코드 요청을 참고합니다.
사용자에게 카카오계정 신규 가입 후 로그인하도록 하기 위해 사용하는 기능입니다.
자세한 안내와 예제는 카카오계정 가입 후 로그인을 참고합니다.
카카오계정 로그인 화면의 ID란에 login_hint 파라미터 값을 자동 입력하는 기능입니다.
자세한 안내와 예제는 로그인 힌트를 참고합니다.
카카오 로그인 요청 시 브라우저에 카카오계정 간편로그인 정보가 있으면 계정 선택 화면을 표시하는 추가 기능입니다.
자세한 안내와 예제는 카카오계정 간편로그인을 참고합니다.
사용자 액세스 토큰과 리프레시 토큰을 모두 만료시킵니다.
자세한 안내와 예제는 로그아웃을 참고합니다.
카카오계정과 함께 로그아웃은 웹 브라우저에 로그인된 카카오계정의 세션을 만료시키고, 서비스에서도 로그아웃 처리할 때 사용하는 로그아웃 추가 기능입니다.
자세한 안내와 예제는 카카오계정과 함께 로그아웃을 참고합니다.
| 메서드 | URL | 인증 방식 |
|---|---|---|
POST | 카카오http://kapi.kakao.com/v1/internal/user/signup공동체 https://kapi.kakao.com/v1/internal/user/signup외부 https://kapi.kakao.com/v1/user/signup | 액세스 토큰 서비스 앱 어드민 키 |
수동 연결은 자동 연결 설정(auto_regi)을 비활성화(False)한 앱에서 사용하는 기능으로, 회원가입 완료 시 수동으로 사용자와 앱의 연결 상태를 연결(Registered)로 변경하기 위해 호출합니다.
헤더에 액세스 토큰을 담아 POST로 요청합니다. 필요한 파라미터를 선택적으로 전달할 수 있습니다. 요청 시 properties 파라미터를 사용해 수동 연결 시점에 서비스의 사용자 정보를 저장할 수 있습니다. properties에 저장한 정보는 연결 해제 시 삭제됩니다. 사용자 프로퍼티 및 사용자 프로퍼티 저장을 참고합니다.
사용자가 연결 대기(Preregistered) 상태에서 24시간 안에 수동 연결 API로 연결이 완료되지 않는다면, 가입 미완료자로 분류되어 카카오 API 플랫폼에서 연결 해제 처리합니다. 연결 해제 시 연결 해제 웹훅이 되어 있다면 웹훅(Webhook)이 전달되므로, 서비스에서도 해당 사용자에 대해 연결 해제 요청 및 사용자 정보 삭제를 해야 합니다. 자세한 정보는 데브톡 공지사항을 참고합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| properties | JSON | 저장할 사용자 프로퍼티(Properties) 키와 값 쌍의 형식으로 구성 (예: {"customAppUserName":"Gordon", "customAppUserAge" : 26}) | X |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_id | String | 사용자 ID | O |
| target_id_type | String | target_id의 타입, 아래 중 하나
| O |
| properties | JSON | 저장할 사용자 프로퍼티(Properties) 키와 값 쌍의 형식으로 구성 (예: {"customAppUserName":"Gordon", "customAppUserAge" : 26}) | X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | Long | 앱과 연결된 사용자의 회원번호 | O |
요청: 액세스 토큰 방식
- 내부 API 호출
- 파라미터: 없음
curl -v -X POST "http://kapi.kakao.com/v1/internal/user/signup" \-H "Authorization: Bearer ${ACCESS_TOKEN}"
요청: 액세스 토큰 방식
- 외부 API 호출
- 파라미터
- 저장할 사용자 정보의 키(
properties): age(나이), gender(성별)
- 저장할 사용자 정보의 키(
curl -v -X POST "https://kapi.kakao.com/v1/user/signup" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \--data-urlencode 'properties={"age":"23", "gender":"female"}'
요청: 서비스 앱 어드민 키 방식
- 내부 API 호출
- 파라미터
- 저장할 사용자 정보의 키(
properties): age(나이), gender(성별)
- 저장할 사용자 정보의 키(
curl -v -X POST "http://kapi.kakao.com/v1/internal/user/signup" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "target_id=1376016924429759243" \-d "target_id_type=user_id" \--data-urlencode 'properties={"age":"23", "gender":"female"}'
응답
// HTTP/1.1 200 OK{"id": 1376016924429759228}
응답: 실패, 앱과 이미 연결되어 있는 사용자인 경우
// HTTP/1.1 400 Bad Request{"msg": "already registered","code": -102}
응답: 실패, 요청 시 사용한 액세스 토큰이 유효하지 않은 경우
// HTTP/1.1 401 Unauthorized{"msg": "this access token does not exist","code": -401}
응답: 실패, 앱에 설정되어 있지 않은 사용자 프로퍼티 저장을 요청한 경우
// HTTP/1.1 400 Bad Request{"msg": "user property not found ([gender, age] for appId=${APP_ID})","code": -201}
| 메서드 | URL | 인증 방식 |
|---|---|---|
POST | 카카오http://kapi.kakao.com/v1/internal/user/unlink공동체 https://kapi.kakao.com/v1/internal/user/unlink외부 https://kapi.kakao.com/v1/user/unlink | 액세스 토큰 서비스 앱 어드민 키 위임 |
사용자와 앱의 연결을 해제합니다. 카카오계정으로만 가입 가능한 카카오 또는 공동체 서비스의 연결 해제는 탈퇴와 같은 의미여야 합니다. 이 외 서비스의 연결 해제는 탈퇴와 별개로 앱과 사용자의 연결 상태만을 변경합니다.
사용자와 앱의 연결이 해제되면 연결 해제 이력이 남으며, 연결 및 연결 해제 이력은 앱 연결 이력 조회로 조회할 수 있습니다.
헤더에 원하는 인증 정보를 담아 POST로 요청하고, 성공 시 앱과 연결을 끊은 사용자 회원번호(user_id)를 받습니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_id | String | 앱과의 연결을 끊을 사용자 ID | O |
| target_id_type | String | target_id의 타입, 아래 중 하나
| O |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}인증 방식, 플랫폼 앱 어드민 키로 인증 요청 서비스 앱의 권한을 플랫폼 앱이 위임받아 요청하는 방식으로 내부 API 요청 시 사용 가능 서비스 구분을 위해 서비스 앱의 앱 ID, 앱 키, 토큰 중 하나 파라미터로 전달 필요 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
- 요청 대상 사용자를 어떤 파라미터로 지정하는지에 따라 필수 파라미터 구성이 달라집니다.
- 서비스 앱 키:
target_app_key,target_id,target_id_type - 서비스 앱 ID:
target_app_id,target_id,target_id_type - 액세스 토큰:
target_access_token
- 서비스 앱 키:
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_app_key | String | 사용자와의 연결을 끊을 서비스 앱의 키 | O(Optional) |
| target_app_id | Long | 사용자와의 연결을 끊을 서비스 앱의 ID | O(Optional) |
| target_access_token | String | 앱과의 연결을 끊을 사용자의 액세스 토큰 값 | O(Optional) |
| target_id | String | 앱과의 연결을 끊을 사용자 ID | O(Optional) |
| target_id_type | String | target_id 타입, 아래 중 하나
| O(Optional) |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | Long | 앱과 연결 해제된 사용자 ID, 회원번호(user_id) | O |
요청: 액세스 토큰 방식
- 파라미터: 없음
curl -v -X POST "http://kapi.kakao.com/v1/internal/user/unlink" \-H "Authorization: Bearer ${ACCESS_TOKEN}"
요청: 서비스 앱 어드민 키 방식
- 파라미터
- 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 카카오계정 ID(account_id)
- 사용자 ID(
curl -v -X POST "http://kapi.kakao.com/v1/internal/user/unlink" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "target_id_type=account_id&target_id=200937"
요청: 위임 방식
- 파라미터
- 서비스 앱 키(
target_app_key) - 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 카카오계정 ID(account_id)
- 서비스 앱 키(
curl -v -X POST "http://kapi.kakao.com/v1/internal/user/unlink" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \-d "target_app_key=${SERVICE_APP_KEY}&target_id_type=account_id&target_id=200937"
요청: 위임 방식
- 파라미터
- 서비스 앱 ID(
target_app_id) - 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 카카오계정 ID(account_id)
- 서비스 앱 ID(
curl -v -X POST "http://kapi.kakao.com/v1/internal/user/unlink" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \-d "target_app_id=57669&target_id_type=account_id&target_id=200937"
요청: 위임 방식
- 파라미터
- 액세스 토큰(
target_access_token)
- 액세스 토큰(
curl -v -X POST "http://kapi.kakao.com/v1/internal/user/unlink" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \-d "target_access_token=${ACCESS_TOKEN}"
응답
{"id": 1376016924426814086}
| 메서드 | URL | 인증 방식 |
|---|---|---|
GET | 카카오http://kapi.kakao.com/v1/internal/user/access_token_info공동체 https://kapi.kakao.com/v1/internal/user/access_token_info외부 https://kapi.kakao.com/v1/user/access_token_info | 액세스 토큰 위임 |
카카오 로그인으로 발급받은 액세스 토큰의 정보를 조회합니다. 주로 아래 두 가지 경우에 사용합니다.
- 토큰을 발급받은 서비스 앱에서 토큰 유효성 검증: 액세스 토큰 방식 사용
- 해당 토큰을 전달 받은 플랫폼에서 토큰의 유효성 검증: 위임 방식 사용
헤더에 원하는 인증 방식별 정보를 담아 GET으로 요청하고, 성공 시 해당 액세스 토큰과 사용자 정보를 받습니다. 응답 중 카카오계정 ID(account_id)는 권한이 있는 앱에서 내부 API로 요청한 경우에만 응답에 포함됩니다.
에러 코드 -401(InvalidTokenException)은 토큰이 만료된 경우이므로 토큰을 갱신해야 합니다. 에러 코드 -1(InternalErrorException)은 카카오 API 및 인증 서버의 내부 장애이므로, 일시 장애로 처리하고 토큰을 강제로 폐기하거나 로그아웃하지 않을 것을 권장합니다.
이 외 에러는 앱이나 사용자, 또는 토큰이 더 이상 유효하지 않은 경우이므로 로그아웃으로 처리합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}인증 방식, 플랫폼 앱 어드민 키로 인증 요청 서비스 앱의 권한을 플랫폼 앱이 위임받아 요청하는 방식으로 내부 API 요청 시 사용 가능 서비스 구분을 위해 서비스 앱의 앱 ID, 앱 키, 토큰 중 하나 파라미터로 전달 필요 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_access_token | String | 정보를 요청할 액세스 토큰 값 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | Long | 회원번호 | X |
| expires_in | Long | 액세스 토큰의 만료 시간(단위: 초) | O |
| app_id | Int | 토큰이 발급된 앱 ID | O |
| account_id | Int | 카카오계정 ID 제공 조건: 카카오계정 ID 응답 권한 보유, 내부 API 요청 | X |
요청: 액세스 토큰 방식
- 파라미터: 없음
curl -v -G GET "http://kapi.kakao.com/v1/internal/user/access_token_info" \-H "Authorization: Bearer ${ACCESS_TOKEN}"
요청: 위임 방식
- 파라미터
- 액세스 토큰(
target_access_token)
- 액세스 토큰(
curl -v -G GET "http://kapi.kakao.com/v1/internal/user/access_token_info" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \-d "target_access_token=${ACCESS_TOKEN}"
응답
{"id": 1227075864,"expires_in": 21420,"app_id": 80859,"account_id": 7075535 // 내부 API 요청 시에만 제공, 권한 필요}
응답: 실패, 액세스 토큰 방식
// HTTP/1.1 401 Unauthorized{"code": -401,"msg": "this access token does not exist"}
액세스 토큰과 리프레시 토큰을 갱신하는 API입니다.
자세한 안내와 예제는 토큰 갱신을 참고합니다.
| 메서드 | URL | 인증 방식 |
|---|---|---|
GET | 카카오http://kapi.kakao.com/v2/internal/user/scopes공동체 https://kapi.kakao.com/v2/internal/user/scopes외부 https://kapi.kakao.com/v2/user/scopes배치 http://kapi.kakao.com/v2/internal/user/scopes/batch | 액세스 토큰 서비스 앱 어드민 키 위임 |
사용자가 동의한 동의항목의 상세 정보 목록을 조회합니다. 앱 관리 페이지의 [카카오 로그인] > [동의항목]에 설정된 동의항목의 목록과 사용자가 동의한 동의항목의 상세 정보를 반환합니다. 사용자가 기존에 동의했던 동의항목이라면 현재 앱에 사용하도록 설정돼 있지 않아도 응답에 포함됩니다.
헤더에 원하는 인증 방식의 정보를 담아 GET으로 요청하고, 성공 시 앱의 동의항목 정보 목록을 받습니다. 각 동의항목 정보는 동의항목 사용 설정 여부, 사용자 동의 여부, 철회 가능 여부와 같은 상세 정보를 포함합니다. 특정 동의항목의 동의 내역만 확인하려면 scopes 파라미터로 동의항목의 ID를 지정해 요청할 수 있으며, 성공 시 응답은 지정된 동의항목의 정보만 포함합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| scopes | String[] | 사용자 동의 여부를 조회하려는 동의항목의 ID 목록 특정 동의항목에 대한 동의 내역만 조회하려는 경우 사용 쉼표(,)를 구분자로 여러 키를 하나의 문자열에 담아 전달 | X |
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_id | String | 동의 내역을 확인할 사용자 ID | O |
| target_id_type | String | target_id 타입외부 URL로 요청 시 user_id만 사용 가능내부 URL로 요청 시 아래 중 하나
| O |
| scopes | String[] | 사용자 동의 여부를 조회하려는 동의항목의 ID 목록 특정 동의항목에 대한 동의 내역만 조회하려는 경우 사용 쉼표(,)를 구분자로 여러 키를 하나의 문자열에 담아 전달 | X |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}인증 방식, 플랫폼 앱 어드민 키로 인증 요청 서비스 앱의 권한을 플랫폼 앱이 위임받아 요청하는 방식으로 내부 API 요청 시 사용 가능 서비스 구분을 위해 서비스 앱의 앱 ID, 앱 키, 토큰 중 하나 파라미터로 전달 필요 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
- 요청 대상 사용자를 어떤 파라미터로 지정하는지에 따라 필수 파라미터 구성이 달라집니다.
- 서비스 앱 키:
target_app_key,target_id,target_id_type - 서비스 앱 ID:
target_app_id,target_id,target_id_type - 액세스 토큰:
target_access_token
- 서비스 앱 키:
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_app_key | String | 사용자의 동의 내역을 확인할 서비스 앱의 키 | O(Optional) |
| target_app_id | Integer | 사용자의 동의 내역을 확인할 서비스 앱의 ID | O(Optional) |
| target_access_token | String | 동의 내역을 확인할 사용자의 액세스 토큰 값 | O(Optional) |
| target_id | String | 동의 내역을 확인할 사용자 ID | O |
| target_id_type | String | target_id 타입, 아래 중 하나
| O |
| scopes | String[] | 사용자 동의 여부를 조회하려는 동의항목의 ID 목록 특정 동의항목에 대한 동의 내역만 조회하려는 경우 사용 쉼표(,)를 구분자로 여러 키를 하나의 문자열에 담아 전달 | X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | Long | 회원번호 | O |
| scopes | Scope[] | 해당 앱의 동의항목(Scope) 목록 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | String | 동의항목 ID | O |
| display_name | String | 사용자 동의 화면에 출력되는 동의항목 이름 또는 설명 | O |
| type | String | 동의항목 타입, 아래 중 하나
| O |
| using | Boolean | 동의항목의 현재 사용 여부 사용자가 동의했으나 현재 앱에 설정되어 있지 않은 동의항목의 경우 false | O |
| delegated | Boolean | 카카오가 관리하지 않는 위임 동의항목인지 여부 제공 조건: 현재 사용 중인 동의항목이고, 위임 동의항목인 경우 | X |
| agreed | Boolean | 사용자 동의 여부 동의한 경우 true, 동의하지 않은 경우 false | O |
| revocable | Boolean | 동의항목의 동의 철회 가능 여부 제공 조건: 사용자가 동의한 동의항목인 경우 | X |
요청: 액세스 토큰 방식
- 파라미터: 없음
curl -v -G GET "http://kapi.kakao.com/v2/internal/user/scopes" \-H "Authorization: Bearer ${ACCESS_TOKEN}"
요청: 액세스 토큰 방식
- 파라미터
- 조회할 동의항목(
scopes)
- 조회할 동의항목(
curl -v -G GET "http://kapi.kakao.com/v2/internal/user/scopes" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d 'scopes=["account_email","friends"]'
요청: 서비스 앱 어드민 키 방식
- 파라미터
- 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id)
- 사용자 ID(
curl -v -G GET "http://kapi.kakao.com/v2/internal/user/scopes" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "target_id=1376016924427232667" \-d "target_id_type=user_id"
요청: 위임 방식
- 파라미터
- 서비스 앱 키(
target_app_key) - 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id)
- 서비스 앱 키(
curl -v -G GET "http://kapi.kakao.com/v2/internal/user/scopes" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \-d "target_app_key=${SERVICE_APP_KEY}" \-d "target_id=1376016924427232667" \-d "target_id_type=user_id"
응답
{"id": 1376016924429759243,"scopes": [{"id": "profile","display_name": "Profile Info(nickname/profile image)","type": "PRIVACY","using": true, // 동의항목 사용 여부"agreed": true, // 사용자 동의 여부"revocable": false // 동의 철회 가능 여부},{"id": "account_email","display_name": "Email","type": "PRIVACY","using": true, // 동의항목 사용 여부"agreed": true, // 사용자 동의 여부"revocable": true // 동의 철회 가능 여부},{"id": "shipping_address","display_name": "Shipping information (receiver, shipping address, phone number)","type": "PRIVACY","using": true, // 동의항목 사용 여부"agreed": false // 사용자 동의 여부}// ...]}
응답: 이메일, 카카오 서비스 내 친구 목록 동의항목을 지정해 요청
{"id": 1376016924429759243,"scopes": [{"id": "friends","display_name": "Friends List in Kakao Service(Including profile image, nickname, and favorites)","type": "PRIVACY","using": true,"agreed": true,"revocable": false},{"id": "account_email","display_name": "Email","type": "PRIVACY","using": true,"agreed": false}]}
| 메서드 | URL | 인증 방식 |
|---|---|---|
POST | 카카오http://kapi.kakao.com/v2/internal/user/revoke/scopes공동체 https://kapi.kakao.com/v2/internal/user/revoke/scopes외부 https://kapi.kakao.com/v2/user/revoke/scopes | 액세스 토큰 서비스 앱 어드민 키 위임 |
사용자의 특정 동의항목에 대한 동의를 철회(Revoke)합니다. 동의항목 동의 내역 조회 API로 조회한 동의항목 정보 중 동의 철회 가능 여부(revocable) 값이 true인 동의항목만 철회 가능합니다. 동의 철회가 불가능한 동의항목을 대상으로 요청한 경우 에러 응답을 받습니다.
헤더에 원하는 인증 방식의 정보를 담아 POST로 요청하고, 성공 시 변경된 앱의 동의항목 정보 목록을 받습니다. 각 동의항목 정보는 동의항목 사용 설정 여부, 사용자 동의 여부, 철회 가능 여부와 같은 상세 정보를 포함합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| scopes | String[] | 동의를 철회할 동의항목 ID 목록 동의항목 동의 내역 조회 API 응답의 동의 철회 가능 여부( revocable) 값이 true인 동의항목만 철회 가능 | O |
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_id | String | 동의를 철회할 사용자 ID | O |
| target_id_type | String | target_id 타입외부 URL로 요청 시 user_id만 사용 가능내부 URL로 요청 시 아래 중 하나
| O |
| scopes | String[] | 동의를 철회할 동의항목 ID 목록 동의항목 동의 내역 조회 API 응답의 동의 철회 가능 여부( revocable) 값이 true인 동의항목만 철회 가능 | O |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}인증 방식, 플랫폼 앱 어드민 키로 인증 요청 서비스 앱의 권한을 플랫폼 앱이 위임받아 요청하는 방식으로 내부 API 요청 시 사용 가능 서비스 구분을 위해 서비스 앱의 앱 ID, 앱 키, 토큰 중 하나 파라미터로 전달 필요 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
- 요청 대상 사용자를 어떤 파라미터로 지정하는지에 따라 필수 파라미터 구성이 달라집니다.
- 서비스 앱 키:
target_app_key,target_id,target_id_type - 서비스 앱 ID:
target_app_id,target_id,target_id_type - 액세스 토큰:
target_access_token
- 서비스 앱 키:
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_app_key | String | 동의를 철회할 서비스 앱의 키 | O(Optional) |
| target_app_id | Integer | 동의를 철회할 서비스 앱의 ID | O(Optional) |
| target_access_token | String | 동의를 철회할 사용자의 액세스 토큰 값 | O(Optional) |
| target_id | String | 동의를 철회할 사용자 ID | O(Optional) |
| target_id_type | String | target_id 타입, 아래 중 하나
| O(Optional) |
| scopes | String[] | 동의를 철회할 동의항목 ID 목록 동의항목 동의 내역 조회 API 응답의 동의 철회 가능 여부( revocable) 값이 true인 동의항목만 철회 가능 | O |
- 동의항목 동의 내역 조회와 동일, 해당 항목 참고
요청: 액세스 토큰 방식
- 파라미터
- 동의항목 목록(
scopes)
- 동의항목 목록(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/revoke/scopes" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \--data-urlencode 'scopes=["account_email"]'
요청: 서비스 앱 어드민 키 방식
- 파라미터
- 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id) - 동의항목 목록(
scopes)
- 사용자 ID(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/revoke/scopes" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \--data-urlencode "target_id=1376016924427232667" \--data-urlencode "target_id_type=user_id" \--data-urlencode 'scopes=["account_birthdate","account_gender","friends"]'
요청: 위임 방식
- 파라미터
- 서비스 앱 ID(
target_app_id) - 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id) - 동의항목 목록(
scopes)
- 서비스 앱 ID(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/revoke/scopes" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \--data-urlencode "target_app_key=${SERVICE_APP_KEY}" \--data-urlencode "target_id=1376016924427232667" \--data-urlencode "target_id_type=user_id" \--data-urlencode 'scopes=["account_birthdate","account_gender","friends"]'
응답: 이메일 동의항목의 동의 철회
{"id": 1376016924429759243,"scopes": [{"id": "profile","display_name": "Profile Info(nickname/profile image)","type": "PRIVACY","using": true,"agreed": true,"revocable": false},{"id": "friends","display_name": "Friends List in Kakao Service(Including profile image, nickname, and favorites)","type": "PRIVACY","using": true,"agreed": true,"revocable": false},{"id": "account_email","display_name": "Email","type": "PRIVACY","using": true,"agreed": false //동의 철회에 성공해 동의 여부 값 false로 변경됨},{"id": "talk_chats","display_name": "Read chat lists in Kakao Talk","type": "SERVICE","using": true,"agreed": true,"revocable": false}// ...]}
응답: 실패, 철회 불가능한 동의항목을 대상으로 요청
// HTTP/1.1 403 Forbidden{"msg": "[profile] is not revocable. check out if it's set as required on developers.kakao.com","code": -3}
응답: 실패, 철회할 동의항목 ID가 잘못된 경우
// HTTP/1.1 400 Bad Request{"msg": "There is no scopes to revoke. check out if given scope id([email]) is correct again.","code": -2}
이 항목은 서비스 약관 관련 API의 사용 방법을 안내합니다.
| 메서드 | URL | 인증 방식 |
|---|---|---|
GET | 카카오http://kapi.kakao.com/v2/internal/user/service_terms공동체 https://kapi.kakao.com/v2/internal/user/service_terms외부 https://kapi.kakao.com/v2/user/service_terms | 액세스 토큰 서비스 앱 어드민 키 위임 |
카카오싱크 서비스에서 특정 사용자가 어떤 서비스 약관에 동의하고 로그인했는지 확인합니다.
개발 문서는 서비스 약관 동의 내역 조회를 참고합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| result | String | 조회할 서비스 약관 목록, 아래 중 하나
| X |
| tags | String | 조회할 서비스 약관 태그, result로 지정한 목록 내 서비스 약관으로 한정여러 태그를 쉼표( ,)로 구분한 하나의 문자열로 전달, 예제 참고 | X |
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_id | Long | 사용자 ID | O |
| target_id_type | String | target_id 타입외부 URL로 요청 시 user_id만 사용 가능내부 URL로 요청 시 아래 중 하나
| O |
| result | String | 조회할 서비스 약관 목록, 아래 중 하나
| X |
| tags | String | 조회할 서비스 약관 태그, result로 지정한 목록 내 서비스 약관으로 한정여러 태그를 쉼표( ,)로 구분한 하나의 문자열로 전달, 예제 참고 | X |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}인증 방식, 플랫폼 앱 어드민 키로 인증 요청 서비스 앱의 권한을 플랫폼 앱이 위임받아 요청하는 방식으로 내부 API 요청 시 사용 가능 서비스 구분을 위해 서비스 앱의 앱 ID, 앱 키, 토큰 중 하나 파라미터로 전달 필요 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
- 요청 대상 사용자를 어떤 파라미터로 지정하는지에 따라 필수 파라미터 구성이 달라집니다.
- 서비스 앱 키:
target_app_key,target_id,target_id_type - 서비스 앱 ID:
target_app_id,target_id,target_id_type - 액세스 토큰:
target_access_token
- 서비스 앱 키:
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_app_key | String | 사용자의 동의 내역을 확인할 서비스 앱의 키 | O(Optional) |
| target_app_id | Integer | 사용자의 동의 내역을 확인할 서비스 앱의 ID | O(Optional) |
| target_access_token | String | 동의 내역을 확인할 사용자의 액세스 토큰 값 | O(Optional) |
| target_id | String | 동의 내역을 확인할 사용자 ID | O |
| target_id_type | String | target_id 타입, 아래 중 하나
| O |
| result | String | 조회할 서비스 약관 목록, 아래 중 하나
| X |
| tags | String | 조회할 서비스 약관 태그, result로 지정한 목록 내 서비스 약관으로 한정여러 태그를 쉼표( ,)로 구분한 하나의 문자열로 전달, 예제 참고 | X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | Long | 회원번호 | O |
| service_terms | ServiceTerms[] | 서비스 약관 목록 | X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| tag | String | 서비스 약관에 설정된 태그(Tag) | O |
| required | Boolean | 서비스 약관의 필수 동의 여부
| O |
| agreed | Boolean | 서비스 약관의 동의 상태
| O |
| revocable | Boolean | 서비스 약관의 동의 철회 가능 여부
중요: 동의 철회 가능 서비스 약관만 서비스 약관 동의 철회 요청 가능 | O |
| agreed_at | Datetime | 사용자가 해당 약관에 마지막으로 동의한 시간 (RFC3339 internet date/time format) | X |
| agreed_by | String | 서비스 약관의 동의 경로KAUTH: 카카오싱크 간편가입 동의 화면KAPI: 서비스 약관에 동의 API | X |
요청: 액세스 토큰 방식, 사용자가 동의한 서비스 약관 조회
curl -v -G GET "http://kapi.kakao.com/v2/internal/user/service_terms" \-H "Authorization: Bearer ${ACCESS_TOKEN}"
요청: 액세스 토큰 방식, 앱에 사용 설정된 서비스 약관 목록 조회
curl -v -G GET "http://kapi.kakao.com/v2/internal/user/service_terms" \-H 'Authorization: Bearer ${ACCESS_TOKEN}' \-d "result=app_service_terms"
요청: 서비스 앱 어드민 키 방식, 특정 태그의 서비스 약관만 조회
curl -v -G GET "http://kapi.kakao.com/v2/internal/user/service_terms" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "target_id_type=user_id" \-d "target_id=${USER_ID}" \-d "tags=optional_no_consent,service_2020_0218"
요청: 위임 방식, 사용자가 동의한 서비스 약관 조회
- 파라미터
- 서비스 앱 키(
target_app_key) - 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id)
- 서비스 앱 키(
curl -v -G GET "http://kapi.kakao.com/v2/internal/user/service_terms" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \-d "target_app_key=${SERVICE_APP_KEY}" \-d "target_id_type=user_id" \-d "target_id=${USER_ID}" \
응답: 사용자가 동의한 서비스 약관
{"id": 111111,"service_terms": [{"tag": "optional_1","required": false,"agreed": true,"revocable": true,"agreed_at": "2023-06-29T07:39:56Z","agreed_by": "KAUTH"},{"tag": "optional_2","required": false,"agreed": true,"revocable": true,"agreed_at": "2024-07-12T07:39:56Z","agreed_by": "KAPI"}// ...]}
응답: 앱에 사용 설정된 서비스 약관 목록
{"id": 111111,"service_terms": [{"tag": "optional_20200616","required": false,"agreed": true,"revocable": true,"agreed_at": "2023-06-29T07:39:56Z","agreed_by": "KAPI"},{"tag": "optional_no_consent","required": false,"agreed": false,"revocable": true},{"tag": "service_2020_0218","required": true,"agreed": true,"revocable": false,"agreed_at": "2023-06-29T07:39:56Z","agreed_by": "KAUTH"}// ...]}
응답: 특정 태그의 서비스 약관
{"id": 111111,"service_terms": [{"tag": "optional_no_consent","required": false,"agreed": false,"revocable": true},{"tag": "service_2020_0218","required": true,"agreed": true,"revocable": false,"agreed_at": "2023-06-29T07:39:56Z","agreed_by": "KAUTH"}]}
응답: 실패, 존재하지 않는 서비스 약관 태그
// HTTP/1.1 400 Bad Request{"msg": "There is no tags to get service terms. check out to configured this tags([test_tag]) in app(test_app).","code": -2}
| 메서드 | URL | 인증 방식 |
|---|---|---|
POST | 카카오http://kapi.kakao.com/v2/internal/user/revoke/service_terms공동체 https://kapi.kakao.com/v2/internal/user/revoke/service_terms외부 https://kapi.kakao.com/v2/user/revoke/service_terms | 액세스 토큰 서비스 앱 어드민 키 위임 |
카카오싱크 서비스에서 특정 사용자가 동의한 서비스 약관의 동의를 철회합니다.
개발 문서는 서비스 약관 동의 철회를 참고합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| tags | String | 동의 철회할 서비스 약관 태그 여러 태그를 쉼표( ,)로 구분한 하나의 문자열로 전달, 예제 참고중요: 서비스 약관 동의 내역 조회 API 응답에서 동의 철회 가능 여부( revocable) 값이 true인 서비스 약관만 철회 가능 | O |
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_id_type | String | target_id 타입외부 URL로 요청 시 user_id만 사용 가능내부 URL로 요청 시 아래 중 하나
| O |
| target_id | Long | 사용자 ID | O |
| tags | String | 동의 철회할 서비스 약관 태그 여러 태그를 쉼표( ,)로 구분한 하나의 문자열로 전달, 예제 참고중요: 서비스 약관 동의 내역 조회 API 응답에서 동의 철회 가능 여부( revocable) 값이 true인 서비스 약관만 철회 가능 | O |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}인증 방식, 플랫폼 앱 어드민 키로 인증 요청 서비스 앱의 권한을 플랫폼 앱이 위임받아 요청하는 방식으로 내부 API 요청 시 사용 가능 서비스 구분을 위해 서비스 앱의 앱 ID, 앱 키, 토큰 중 하나 파라미터로 전달 필요 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
- 요청 대상 사용자를 어떤 파라미터로 지정하는지에 따라 필수 파라미터 구성이 달라집니다.
- 서비스 앱 키:
target_app_key,target_id,target_id_type - 서비스 앱 ID:
target_app_id,target_id,target_id_type - 액세스 토큰:
target_access_token
- 서비스 앱 키:
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_app_key | String | 동의를 철회할 서비스 앱의 키 | O(Optional) |
| target_app_id | Integer | 동의를 철회할 서비스 앱의 ID | O(Optional) |
| target_access_token | String | 동의를 철회할 사용자의 액세스 토큰 값 | O(Optional) |
| target_id | String | 동의를 철회할 사용자 ID | O(Optional) |
| target_id_type | String | target_id 타입, 아래 중 하나
| O(Optional) |
| tags | String | 동의 철회할 서비스 약관 태그 여러 태그를 쉼표( ,)로 구분한 하나의 문자열로 전달, 예제 참고중요: 서비스 약관 동의 내역 조회 API 응답에서 동의 철회 가능 여부( revocable) 값이 true인 서비스 약관만 철회 가능 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | Long | 회원번호 | O |
| revoked_service_terms | RevokedServiceTerms[] | 동의 철회에 성공한 서비스 약관 목록 중요: 동의 철회가 불가능한 사용자 미동의 서비스 약관은 포함되지 않음 | X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| tag | String | 동의 철회에 성공한 서비스 약관 태그(Tag) | O |
| agreed | Boolean | 동의 철회 후 서비스 약관의 동의 상태
| O |
요청: 액세스 토큰 방식
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/revoke/service_terms" \-H "Authorization: Bearer ${ACCESS_TOKEN}"-d "tags=optional_20200616,optional_no_consent"
요청: 서비스 앱 어드민 키 방식
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/revoke/service_terms" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "target_id_type=user_id" \-d "target_id=${USER_ID}" \-d "tags=optional_20200616,optional_no_consent"
요청: 위임 방식
- 파라미터
- 서비스 앱 ID(
target_app_id) - 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id) - 동의 철회할 서비스 약관 태그(
tags)
- 서비스 앱 ID(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/revoke/service_terms" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \-d "target_app_key=${SERVICE_APP_KEY}" \-d "target_id_type=user_id" \-d "target_id=${USER_ID}" \-d "tags=optional_20200616,optional_no_consent"
응답
{"id": 111111,"revoked_service_terms": [{"tag": "optional_20200616","agreed": false},{"tag": "optional_no_consent","agreed": false}]}
응답: 실패, 존재하지 않는 서비스 약관 태그
// HTTP/1.1 400 Bad Request{"msg": "There is no tags to revoke. check out to configured this tags([test_tag]) in app(test_app).","code": -2}
| 메서드 | URL | 인증 방식 |
|---|---|---|
POST | 카카오http://kapi.kakao.com/v2/internal/user/upgrade/service_terms공동체 https://kapi.kakao.com/v2/internal/user/upgrade/service_terms외부 https://kapi.kakao.com/v2/user/upgrade/service_terms | 액세스 토큰 서비스 앱 어드민 키 위임 |
카카오싱크 서비스에서 사용자가 특정 서비스 약관에 동의한 것으로 처리합니다.
개발 문서는 고급: 서비스 약관에 동의를 참고합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| tags | String | 동의 처리할 서비스 약관 태그 여러 태그를 쉼표( ,)로 구분한 하나의 문자열로 전달, 예제 참고 | O |
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_id_type | String | target_id 타입외부 URL로 요청 시 user_id만 사용 가능내부 URL로 요청 시 아래 중 하나
| O |
| target_id | Long | 사용자 ID | O |
| tags | String | 동의 처리할 서비스 약관 태그 여러 태그를 쉼표( ,)로 구분한 하나의 문자열로 전달, 예제 참고 | O |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}인증 방식, 플랫폼 앱 어드민 키로 인증 요청 서비스 앱의 권한을 플랫폼 앱이 위임받아 요청하는 방식으로 내부 API 요청 시 사용 가능 서비스 구분을 위해 서비스 앱의 앱 ID, 앱 키, 토큰 중 하나 파라미터로 전달 필요 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
- 요청 대상 사용자를 어떤 파라미터로 지정하는지에 따라 필수 파라미터 구성이 달라집니다.
- 서비스 앱 키:
target_app_key,target_id,target_id_type - 서비스 앱 ID:
target_app_id,target_id,target_id_type - 액세스 토큰:
target_access_token
- 서비스 앱 키:
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_app_key | String | 사용자의 동의 내역을 확인할 서비스 앱의 키 | O(Optional) |
| target_app_id | Integer | 사용자의 동의 내역을 확인할 서비스 앱의 ID | O(Optional) |
| target_access_token | String | 동의 내역을 확인할 사용자의 액세스 토큰 값 | O(Optional) |
| target_id | String | 동의 내역을 확인할 사용자 ID | O |
| target_id_type | String | target_id 타입, 아래 중 하나
| O |
| tags | String | 동의 처리할 서비스 약관 태그 여러 태그를 쉼표( ,)로 구분한 하나의 문자열로 전달, 예제 참고 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | Long | 회원번호 | O |
| agreed_service_terms | AgreedServiceTerms[] | 동의 처리에 성공한 서비스 약관 목록 | X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| tag | String | 서비스 약관에 설정된 태그(Tag) | O |
| agreed | Boolean | 서비스 약관의 동의 상태
| O |
| agreed_at | Datetime | 사용자가 해당 약관에 마지막으로 동의한 시간 (RFC3339 internet date/time format) | X |
| agreed_by | String | 서비스 약관의 동의 경로KAUTH: 카카오싱크 간편가입 동의 화면KAPI: 서비스 약관에 동의 API | X |
요청: 액세스 토큰 방식
- 파라미터
- 동의 처리할 서비스 약관 목록(
tags)
- 동의 처리할 서비스 약관 목록(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/upgrade/service_terms" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "tags=term01,term02,term03"
요청: 서비스 앱 어드민 키 방식
- 파라미터
- 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id) - 동의 처리할 서비스 약관 목록(
tags)
- 사용자 ID(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/upgrade/service_terms" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \-d "target_id=${USER_ID}" \-d "target_id_type=user_id" \-d "tags=term01,term02,term03"
요청: 위임 방식
- 파라미터
- 서비스 앱 키(
target_app_key) - 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 카카오계정 ID(account_id) - 동의 처리할 서비스 약관 목록(
tags)
- 서비스 앱 키(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/upgrade/service_terms" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \-d "target_app_key=${SERVICE_APP_KEY}" \-d "target_id=${ACCOUNT_ID}" \-d "target_id_type=account_id" \-d "tags=term01,term02,term03"
응답: 사용자가 동의한 서비스 약관
// HTTP/1.1 200 OK{"id": 1376016924429759243,"agreed_service_terms": [{"tag": "term03","agreed": true,"agreed_at": "2023-08-02T08:33:25Z","agreed_by": "KAPI"},{"tag": "term01","agreed": true,"agreed_at": "2023-08-02T08:33:25Z","agreed_by": "KAUTH"},{"tag": "term02","agreed": true,"agreed_at": "2023-08-02T08:33:25Z","agreed_by": "KAUTH"}]}
응답: 동의 처리에 성공한 일부 서비스 약관만 포함
// HTTP/1.1 200 OK{"id": 1376016924429759243,"agreed_service_terms": [{"tag": "term02","agreed": true,"agreed_at": "2023-08-02T08:34:56Z"}]}
카카오 로그인의 OpenID Connect 서비스 제공자 설정을 확인합니다.
자세한 안내와 예제는 OIDC: 메타데이터 조회를 참고합니다.
ID 토큰 유효성 검증에 필요한 공개키 목록을 조회합니다.
자세한 안내와 예제는 OIDC: 공개키 목록 조회를 참고합니다.
ID 토큰 유효성 검증에 참고할 ID 토큰 정보를 조회합니다.
자세한 안내와 예제는 OIDC: ID 토큰 정보 조회를 참고합니다.
현재 로그인한 사용자의 정보를 불러옵니다.
자세한 안내와 예제는 OIDC: 사용자 정보 조회를 참고합니다.
| 메서드 | URL | 인증 방식 |
|---|---|---|
POST | 카카오http://kapi.kakao.com/v2/internal/user/upgrade/scopes공동체 https://kapi.kakao.com/v2/internal/user/upgrade/scopes외부 https://kapi.kakao.com/v2/user/upgrade/scopes | 액세스 토큰 서비스 앱 어드민 키 위임 |
요청한 동의항목(Scope)을 사용자가 동의한 동의항목으로 추가합니다. 사용자로부터 동의를 받는 주체가 공동체이고 명시적인 제3자 제공 동의 화면을 제공하지 않을 경우, 동의항목 동의 처리 API가 아닌 동의항목 추가 동의 요청 API를 사용할 것을 권장합니다.
헤더에 원하는 인증 방식의 정보를 담아 POST로 요청하고, 성공 시 변경된 앱의 동의항목 정보 목록을 받습니다. 각 동의항목 정보는 동의항목 사용 설정 여부, 사용자 동의 여부, 철회 가능 여부와 같은 상세 정보를 포함합니다.
- 앱에 사용하도록 설정되어 있지 않은 동의항목에 대해 추가 요청한 경우,
UnsupportedApiException(-3) 에러 응답을 받습니다. - 요청 시 전달한 동의항목과 응답의 동의항목을 비교해서 동의항목 추가 완료 여부를 확인해야 합니다. 사용자가 동의할 수 없는 동의항목의 추가 요청은 수행되지 않으며, 동의 내역 변화가 없으므로 동의항목 추가 요청 이전과 동일합니다. 아래와 같은 경우에 사용자가 동의할 수 없는 동의항목에 해당합니다.
scopes파라미터에 값(Value)이 없음- 사용자가 수집 동의를 하지 않은 동의항목
- 이 외 내부 기준에 따라 제3자 제공 동의 화면을 표시할 수 없는 경우
- 만 14세 미만 사용자를 대상으로 요청할 경우, 보호자 동의 토큰(Token)을 전달해야 합니다. 만 14세 미만 사용자 대상 요청에 보호자 동의 토큰이 없는 경우
RequiredParentAgreementException(-409) 에러 응답을 받습니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| scopes | String[] | 추가할 동의항목 ID 목록 | O |
| guardian_token | String | 14세 미만 사용자인 경우 필수 14세 미만 사용자의 동의항목을 추가하기 위해 필요한 보호자인증 토큰 | X |
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_id | String | 동의항목을 추가할 사용자 ID | O |
| target_id_type | String | target_id 타입외부 URL로 요청 시 user_id만 사용 가능내부 URL로 요청 시 아래 중 하나
| O |
| scopes | String[] | 추가할 동의항목 ID 목록 | O |
| guardian_token | String | 14세 미만 사용자인 경우 필수 14세 미만 사용자의 동의항목을 추가하기 위해 필요한 보호자인증 토큰 | X |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}인증 방식, 플랫폼 앱 어드민 키로 인증 요청 서비스 앱의 권한을 플랫폼 앱이 위임받아 요청하는 방식으로 내부 API 요청 시 사용 가능 서비스 구분을 위해 서비스 앱의 앱 ID, 앱 키, 토큰 중 하나 파라미터로 전달 필요 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
- 요청 대상 사용자를 어떤 파라미터로 지정하는지에 따라 필수 파라미터 구성이 달라집니다.
- 서비스 앱 키:
target_app_key,target_id,target_id_type - 서비스 앱 ID:
target_app_id,target_id,target_id_type - 액세스 토큰:
target_access_token
- 서비스 앱 키:
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_app_key | String | 사용자의 동의 내역을 확인할 서비스 앱의 키 | O(Optional) |
| target_app_id | Integer | 사용자의 동의 내역을 확인할 서비스 앱의 ID | O(Optional) |
| target_access_token | String | 동의 내역을 추가할 사용자의 액세스 토큰 값 | O(Optional) |
| target_id | String | 동의 내역을 확인할 사용자 ID | O(Optional) |
| target_id_type | String | target_id 타입, 아래 중 하나
| O(Optional) |
| scopes | String[] | 추가할 동의항목 ID 목록 | O |
| guardian_token | String | 14세 미만 사용자인 경우 필수 14세 미만 사용자의 동의항목을 추가하기 위해 필요한 보호자인증 토큰 | X |
- 동의항목 동의 내역 조회와 동일, 해당 항목 참고
요청: 액세스 토큰 방식
- 파라미터
- 동의항목 목록(
scopes)
- 동의항목 목록(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/upgrade/scopes" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \--data-urlencode 'scopes=["birthday","gender","friends"]'
요청: 서비스 앱 어드민 키 방식
- 파라미터
- 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id) - 동의항목 목록(
scopes)
- 사용자 ID(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/upgrade/scopes" \-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \--data-urlencode "target_id=1376016924427232667" \--data-urlencode "target_id_type=user_id" \--data-urlencode 'scopes=["birthday","gender","friends"]'
요청: 위임 방식
- 파라미터
- 서비스 앱 키(
target_app_key) - 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id) - 동의항목 목록(
scopes)
- 서비스 앱 키(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/upgrade/scopes" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \--data-urlencode "target_app_key=${SERVICE_APP_KEY}" \--data-urlencode "target_id=1376016924427232667" \--data-urlencode "target_id_type=user_id" \--data-urlencode 'scopes=["birthday","gender","friends"]'
요청: 위임 방식
- 파라미터
- 서비스 앱 키(
target_app_key) - 사용자 ID(
target_id) - 사용자 ID 타입(
target_id_type): 회원번호(user_id) - 동의항목 목록(
scopes) - 동의받은 경로(
channel)
- 서비스 앱 키(
curl -v -X POST "http://kapi.kakao.com/v2/internal/user/upgrade/scopes" \-H "Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}" \--data-urlencode "target_app_key=${SERVICE_APP_KEY}" \--data-urlencode "target_id=1376016924427232667" \--data-urlencode "target_id_type=user_id" \--data-urlencode 'scopes=["birthday","gender","friends","shipping_address"]' \-d 'channel=bizplugin'
응답: 이메일 동의항목 추가
{"id": 1376016924429759243,"scopes": [{"id": "profile","display_name": "Profile Info(nickname/profile image)","type": "PRIVACY","using": true,"agreed": true,"revocable": false},{"id": "friends","display_name": "Friends List in Kakao Service(Including profile image, nickname, and favorites)","type": "PRIVACY","using": true,"agreed": true,"revocable": false},{"id": "account_email","display_name": "Email","type": "PRIVACY","using": true,"agreed": true, // 동의항목 추가 요청에 성공해 동의한 상태로 변경됨"revocable": true},{"id": "gender","display_name": "Gender","type": "PRIVACY","using": true,"agreed": true,"revocable": true}// ...]}
응답: 실패, 앱에 사용하도록 설정되지 않은 동의항목에 대한 요청
// HTTP/1.1 403 Forbidden{"msg": "[APP_NAME] App disabled [[shipping_address]] scopes on developers.kakao.com. Enable it first.","code": -3}
응답: 실패, 수집 후 제공이 설정돼 있고, 사용자에게 값이 없는 동의항목에 대한 요청
// HTTP/1.1 403 Forbidden{"msg": "scope([shipping_address]) cannot be updated because it is set as 'Provision after collecting information through Kakao Account' but this information is not saved in Kakao Account of this user(1376016924429759243)","code": -3}
응답: 실패, 추가할 동의항목 ID가 잘못된 경우
// HTTP/1.1 400 Bad Request{"msg": "There is no scopes to upgrade. check out if given scope id([email]) is correct again.","code": -2}
응답: 실패, 사용자가 카카오계정에 수집하는 것을 동의하지 않은 동의항목에 대한 요청
// HTTP/1.1 403 Forbidden{"msg": "scope([gender]) cannot be updated because this user(1376016924429759243) does not agree on Kakao Account terms for it.","code": -3}
응답: 실패, 보호자 동의 토큰 없이 만 14세 미만 사용자에 대한 요청
// HTTP/1.1 401 Unauthorized{"msg": "guardian consent is required.","code": -409}
Reseponse: 실패, 만 14세 미만 가입 차단 앱의 만 14세 미만 사용자에 대한 요청
// HTTP/1.1 401 Unauthorized{"msg": "under the age limit.","code": -409}
사용처 제한 API는 지정된 사용처에만 제공하는 카카오 API입니다. 지정된 사용처 이외의 서비스에서 사용처 제한 API를 사용하려면 [서비스] API플랫폼 아지트에서 별도 협의가 필요합니다.
| 메서드 | URL | 인증 방식 |
|---|---|---|
GET | 카카오http://kapi.kakao.com/v2/internal/user/age_auth공동체 https://kapi.kakao.com/v2/internal/user/age_auth외부 https://kapi.kakao.com/v2/user/age_auth | 액세스 토큰 서비스 앱 어드민 키 위임 |
사용자의 연령인증 정보를 확인합니다. 인증 후 90일 초과 시점, 결제 전과 같이 연령인증 정보 확인이 필요한 경우에 연령인증 정보, 인증 방식, 나이 제한 만족 여부, 인증 날짜, CI 값 등 정보를 확인하기 위해 호출합니다.
기본 응답은 사용자의 연령인증 정보를 제공합니다. 기준 제한 연령(age_limit), 계산 기준(age_criteria)을 지정하면 요청 시점의 제한 연령 만족 여부를 추가적으로 확인할 수 있습니다.
이 기능은 연령인증을 숙지한 후 사용해야 합니다. 이 API로 CI 값을 확인하려면 동의항목 설정 권한이 필요하며, 아래 CI 사용 시 주의 사항을 준수해야 합니다.
- CI는 서비스에서 필요한 경우에만 사용합니다.
- 앱 관리 페이지의 [카카오 로그인] > [동의항목]에서 CI 동의항목을 사용하도록 설정해야 합니다.
- 응답에 CI 정보를 포함하려면 요청 시
property_keys파라미터에 "account_ci"를 전달해야 합니다. - 응답의 CI 정보는 아래와 같이 처리합니다.
ci != null: CI 값 요청 성공ci == null && ci_needs_agreement=true: 사용자가 CI 동의항목에 동의하지 않은 경우, CI에 대한 동의항목 추가 동의 요청 수행ci == null && ci_needs_agreement=false: 사용자가 CI 포함 본인인증을 받지 않은 경우, 연령인증 요청 후 CI에 대한 동의항목 추가 동의 요청 수행
요청 시 전달된 계산 기준(age_criteria) 값에 따라 제한 연령 만족 여부(bypass_age_limit) 값이 달라집니다. 아래 예시를 참고합니다.
- 기준 제한 연령(
age_limit): 19 - 사용자 출생일: 2004년 12월 31일
- 연령인증 정보 조회 요청일: 2023년 10월 1일
- 계산 기준별 제한 연령 만족 여부(
bypass_age_limit)- 연 나이(
YEAR) 지정 시: 19세로 제한 연령 만족(true) - 만 나이(
INTERNATIONAL) 지정 시: 만 18세로 제한 연령 만족하지 않음(false)
- 연 나이(
| 이름 | 형식 | 설명 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| age_limit | Integer | 응답의 제한 연령 만족 여부(bypass_age_limit)를 판단하는 기준 제한 연령일반적으로 15 또는 19중요: age_limit 미사용 시 응답의 bypass_age_limit 제공하지 않음 | X |
| age_criteria | String | 응답의 제한 연령 만족 여부(bypass_age_limit) 계산 기준, 아래 중 하나
중요: age_limit 사용 시 필수참고: 연 나이는 세는 나이와 기준이 다르며, 세는 나이는 연령 기준으로 지원하지 않음 | X |
| property_keys | String[] | 카카오계정 CI(account_ci) 값 대조가 필요한 경우 사용 참고: CI 값이 없는 경우 응답에 포함되지 않으며 ci_needs_agreement 값을 참고해 동의항목 추가 동의 요청 API를 호출해야 함 | X |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_id | String | 연령인증 정보를 확인할 사용자 ID | O |
| target_id_type | String | target_id 타입, 아래 중 하나
| O |
| age_limit | Integer | 응답의 제한 연령 만족 여부(bypass_age_limit)를 판단하는 기준 제한 연령일반적으로 15 또는 19중요: age_limit 미사용 시 응답의 bypass_age_limit 제공하지 않음 | X |
| age_criteria | String | 응답의 제한 연령 만족 여부(bypass_age_limit) 계산 기준, 아래 중 하나
중요: age_limit 사용 시 필수참고: 연 나이는 세는 나이와 기준이 다르며, 세는 나이는 연령 기준으로 지원하지 않음 | X |
| property_keys | String[] | 카카오계정 CI(account_ci) 값 대조가 필요한 경우 사용참고: CI 값이 없는 경우 응답에 포함되지 않으며 ci_needs_agreement 값을 참고해 동의항목 추가 동의 요청 API를 호출해야 함 | X |
- 내부 API 요청 시에만 사용 가능합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${DELEGATOR_APP_ADMIN_KEY}인증 방식, 플랫폼 앱 어드민 키로 인증 요청 서비스 앱의 권한을 플랫폼 앱이 위임받아 요청하는 방식으로 내부 API 요청 시 사용 가능 서비스 구분을 위해 서비스 앱의 앱 ID, 앱 키, 토큰 중 하나 파라미터로 전달 필요 | O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 | O |
- 요청 대상 사용자를 어떤 파라미터로 지정하는지에 따라 필수 파라미터 구성이 달라집니다.
- 서비스 앱 키:
target_app_key,target_id,target_id_type - 서비스 앱 ID:
target_app_id,target_id,target_id_type - 액세스 토큰:
target_access_token
- 서비스 앱 키:
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_app_key | String | 사용자 연령인증 정보를 확인할 서비스 앱의 키 | O(Optional) |
| target_app_id | Long | 사용자 연령인증 정보를 확인할 서비스 앱의 ID | O(Optional) |
| target_access_token | String | 연령인증 정보를 확인할 사용자의 액세스 토큰 값 | O(Optional) |
| target_id | String | 연령인증 정보를 확인할 사용자 ID | O(Optional) |
| target_id_type | String | target_id 타입, 아래 중 하나
| O(Optional) |
| age_limit | Integer | 응답의 제한 연령 만족 여부(bypass_age_limit)를 판단하는 기준 제한 연령일반적으로 15 또는 19중요: age_limit 미사용 시 응답의 bypass_age_limit 제공하지 않음 | X |
| age_criteria | String | 응답의 제한 연령 만족 여부(bypass_age_limit) 계산 기준, 아래 중 하나
중요: age_limit 사용 시 필수참고: 연 나이는 세는 나이와 기준이 다르며, 세는 나이는 연령 기준으로 지원하지 않음 | X |
| property_keys | String[] | 카카오계정 CI(account_ci) 값 대조가 필요한 경우 사용참고: CI 값이 없는 경우 응답에 포함되지 않으며 ci_needs_agreement 값을 참고해 동의항목 추가 동의 요청 API를 호출해야 함 | X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | Long | 연령인증 정보를 확인한 사용자의 ID | O |
| auth_level | String | 사용자가 받은 연령인증 레벨, 아래 중 하나
| X |
| auth_level_code | Integer | auth_level 비교 편의를 위한 코드(Code), 아래 중 하나
| X |
| bypass_age_limit | Boolean | 제한 연령 만족 여부 요청 시 전달된 age_criteria의 계산 기준 적용
참고: 앱에 설정된 제한 연령이 없거나 요청 시 age_limit 파라미터가 전달되지 않은 경우 응답에 포함되지 않음 | X |
| authenticated_at | String | 인증받은 시각(RFC3339 internet date/time 형식) | X |
| ci_needs_agreement | Boolean | 사용자 동의 시 CI 정보 제공 가능 | X |
| ci | String | 연령인증 후 받은 CI 값 제공 조건: 사용자가 CI 동의항목에 동의한 뒤 CI 정보를 포함한 연령인증을 받은 경우 | X |
요청: 액세스 토큰 방식
- 사용자가 성인 콘텐츠 접근 시 제한 연령 만족 여부 확인 요청
- 파라미터
- 제한 연령(
age_limit): 19 - 계산 기준(
age_criteria): 만 나이(INTERNATIONAL)
- 제한 연령(
curl -v -G GET "https://kapi.kakao.com/v2/user/age_auth" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d "age_limit=19" \-d "age_criteria=INTERNATIONAL"
요청: 액세스 토큰 방식
- CI 포함 연령인증 정보 조회 요청
- 파라미터
- 응답에 포함할 사용자 정보의 키(
property_keys): CI(account_ci)
- 응답에 포함할 사용자 정보의 키(
curl -v -G GET "https://kapi.kakao.com/v2/user/age_auth" \-H "Authorization: Bearer ${ACCESS_TOKEN}" \-d 'property_keys=["account_ci"]'
응답: 연령인증(2차 본인인증)을 완료한 만 19세 이상 사용자, 제한 연령 만족
{"id": 1376016924427023359,"auth_level": "AUTH_LEVEL2","auth_level_code": 2,"bypass_age_limit": true,"authenticated_at": "2015-12-04T21:23:26Z"}
응답: 연령인증(2차 본인인증)을 완료한 만 19세 미만 사용자, 제한 연령 만족하지 않음
{"id": 1376016924427023359,"auth_level": "AUTH_LEVEL2","auth_level_code": 2,"bypass_age_limit": false,"authenticated_at": "2015-12-04T21:23:26Z"}
응답: 연령인증(2차 본인인증)을 완료한 만 19세 이상 사용자, 제한 연령 만족 여부 확인 요청하지 않음
{"id": 1376016924427023359,"auth_level": "AUTH_LEVEL2","auth_level_code": 2,"authenticated_at": "2015-12-04T21:23:26Z"}
응답: 1차 본인인증만 완료한 만 19세 이상 사용자, 제한 연령 만족
{"id": 1376016924427023359,"auth_level": "AUTH_LEVEL1","auth_level_code": 1,"bypass_age_limit": true,"authenticated_at": "2015-12-04T21:23:26Z"}
응답: 본인인증을 완료하지 않은 사용자
{"id": 1376016924427023359}
응답: CI 포함 요청, CI를 포함한 연령인증(2차 본인인증)을 완료한 만 19세 이상 사용자, 제한 연령 만족
{"id": 1376016924427023359,"auth_level": "AUTH_LEVEL2","auth_level_code": 2,"bypass_age_limit": true,"authenticated_at": "2015-12-04T21:23:26Z","ci": "${CI}"}
응답: CI 포함 요청, CI를 포함한 연령인증(2차 본인인증)을 완료한 만 19세 미만 사용자, 제한 연령 만족하지 않음
{"id": 1376016924427023359,"auth_level": "AUTH_LEVEL2","auth_level_code": 2,"bypass_age_limit": false,"authenticated_at": "2015-12-04T21:23:26Z","ci": "${CI}"}
응답: CI 포함 요청, CI를 포함하지 않은 연령인증(2차 본인인증)을 완료한 사용자
{"id": 1376016924427023359,"auth_level": "AUTH_LEVEL2","auth_level_code": 2,"authenticated_at": "2015-12-04T21:23:26Z"}
응답: CI 포함 요청, 1차 본인인증만 완료한 사용자
{"id": 1376016924427023359,"auth_level": "AUTH_LEVEL1","auth_level_code": 1,"authenticated_at": "2015-12-04T21:23:26Z"}
응답: CI 포함 요청, 본인인증을 완료하지 않은 사용자
{"id": 1376016924427023359}
| 권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
|---|---|---|---|
| 인하우스 앱 전용 | 카카오 로그인 활성화 | 필요: 연결, 연결 대기 | - |
클라이언트에서 사용자에게 연령인증 또는 본인인증을 요청하는 페이지를 호출합니다. 연령인증 페이지는 카카오계정에서 제공하는 기능이며, 연령인증을 숙지한 후 사용해야 합니다.
파라미터
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| token_type | String | 오픈 플랫폼을 위한 분기 정보(api로 고정) | O |
| access_token | String | 카카오 로그인으로 발급받은 액세스 토큰 | O |
| return_url | String | 연령인증 후 이동할 URL | O |
| auth_level | Integer | 연령인증 레벨, 아래 중 하나
access_token으로 얻은 기본값 사용 | X |
| age_limit | Integer | 제한 연령, 일반적으로 15 또는 19 앱에 연령인증 레벨이 설정돼 있다면 access_token으로 얻은 기본값 사용 | X |
- 본인인증기관에서 사용자 본인인증 후 결과를 받아 카카오 인증 서버에 저장하고, 클라이언트는
return_url로 이동합니다. - 사용자의 연령인증 정보는 연령인증 정보 조회 API를 사용해 받을 수 있습니다.
| 에러 코드 | 설명 |
|---|---|
| -440 | BAD_PARAMETERS클라이언트 정보가 호환되지 않음 인증 기관으로부터 받은 데이터가 비어 있음 앱에도 연령인증 정보가 없고 실제 입력도 없는 경우 |
| -450 | NOT_AUTHORIZED_AGE연령인증 미완료로 연령인증이 필요한 상태 기본적으로는 연령인증 여부 확인 시 정상적인 상황 |
| -451 | LOWER_AGE_LIMIT현재 앱의 연령제한보다 사용자의 연령이 낮은 경우 |
| -452 | ALREADY_AGE_AUTHORIZED이미 연령인증을 완료한 경우, 2차 인증이 완료되어 있는 상황에서 1차 인증을 시도했을 경우 |
| -453 | EXCEED_AGE_CHECK_LIMIT연령인증 횟수 초과 |
| -480 | AGE_AUTH_RESULT_MISMATCH이전에 인증했던 정보와 불일치(생일) 기존 BIRTHDAY_MISMATCH |
| -481 | CI_RESULT_MISMATCHCI 정보 불일치 |
| -500 | ERROR사용자 찾기 실패, 인증 기관으로부터 받은 생일이 불일치할 경우 예기치 못한 에러가 발생한 경우 |
요청
- 파라미터
- 액세스 토큰(
access_token) - 연령인증 레벨(
auth_level): 연령인증(10) - 제한 연령(
age_limit): 19
- 액세스 토큰(
https://auth.kakao.com/ageauths/main.html?token_type=api&return_url=http://www.kakao.com&access_token=${ACCESS_TOKEN}&auth_level=10&age_limit=19