본문 바로가기메인 메뉴 바로가기사이드 메뉴 바로가기

kakao developers

관련사이트

사이드 메뉴

카카오맵

검색

이 문서는 식별자 공유(Shared identity) 기능을 설명합니다.

식별자 공유는 서로 다른 두 개 이상의 서비스에서 동일한 사용자를 식별하기 위해 발급되는 공유 회원번호를 함께 사용하는 기능입니다.

예를 들어, 여러 개의 서비스(예: A 백화점, A 베이커리, A 카페 등)가 통합 회원체계(예: A 멤버스)를 이용하는 경우, 통합 멤버십 서비스에서 동일한 사용자를 식별할 때 활용할 수 있습니다. 또는 회원체계를 공유하진 않지만, 프로모션 또는 계약 관계에 따라 동일 사용자에 대한 식별이 필요한 경우에도 활용할 수 있습니다.

사용 조건

  • 그룹에 속한 모든 앱카카오 로그인을 사용해야 합니다.
  • 공유 회원번호를 이용하려면 멤버 앱을 이용하는 사용자의 동의가 필요합니다.

  1. 데브톡에 아래 정보와 함께 식별자 공유 그룹 생성을 요청합니다. (참고: 식별자 공유 그룹)
    • 대표 앱 ID: 서비스 및 가입 정책의 기준이 되는 앱
    • 멤버 앱 ID 목록: 대표 앱의 정책이나 상태의 영향을 받는 앱
    • 목적: 공유 회원번호가 필요한 이유 및 목적
    • 사용 시나리오: 공유 회원번호가 필요한 시나리오 및 사용 방법
  2. 카카오 담당자가 식별자 공유 그룹을 생성하면, [식별자 공유 그룹]에서 식별자 공유 그룹 정보를 확인할 수 있습니다.
  3. 동의항목을 설정합니다.
  4. 멤버 앱 사용자에게 동의를 요청해 공유 회원번호를 발급받습니다. (참고: 공유 회원번호 발급 과정)
  5. 멤버 앱과 대표 앱에서 공유 회원번호를 사용하여 동일한 사용자를 식별합니다.

앱 관리 페이지의 [카카오 로그인] > [동의항목] > [공유 식별자]에서 식별자 공유 그룹 ID를 확인하거나 동의항목을 설정할 수 있습니다.

동의항목 이름ID
공유 회원번호shared_id:{group_id} (예: shared_id:1234)

공유 회원번호 동의항목 설정

[A] 식별자 공유 그룹: 그룹에 속한 앱 정보를 확인할 수 있는 페이지로 이동

[B] 동의항목 ID: 식별자 공유 그룹 ID를 포함한 동의항목 ID

[C] 설정: 동의항목 설정창에서 아래 [동의 단계] 중 하나 선택

  • 필수 동의: 사용자가 카카오 로그인 시 필수 항목으로 노출, 인가 코드 요청 API 호출 시 scope로 정의하지 않아도 동의화면에 노출
  • 이용 중 동의: 사용자가 서비스 이용 중 동의가 필요한 시점에 동의화면 노출, 동의항목 추가 동의 요청 API 호출 시 scope 정의 필수 (참고: 동의 요청)
  • 사용 안 함: 동의화면에 미노출, 이 경우 공유 회원번호를 발급 받을 수 없음

앱 관리 페이지의 [카카오 로그인] > [식별자 공유 그룹] > [그룹에 속한 앱]에서 그룹에 속한 앱 정보를 확인할 수 있습니다.

식별자 공유 그룹 확인

[A] 그룹 정보: 식별자 공유 그룹 이름, ID, 설명

[B] 그룹에 속한 앱: 그룹에 포함된 앱 정보

  • 대표 앱: 그룹의 대표 앱 정보
  • 멤버 앱: 그룹의 멤버 앱 정보, 대표 앱인 경우에만 노출, 대표 앱은 식별자 공유 그룹에 속한 모든 멤버 앱 목록 확인 가능

공유 회원번호 발급 과정에 대해 안내합니다. 멤버 앱에서 동의항목을 설정해야 공유 회원번호를 발급할 수 있습니다.

  1. 동의항목 설정에 따라 멤버 앱 사용자에게 동의를 요청하는 동의화면이 노출됩니다.
  2. 사용자가 [공유 회원번호(shared_id:{group_id})] 사용에 동의합니다.
  3. 계정 상태 변경 웹훅을 이용하는 경우, 사용자 동의가 완료되면 웹훅이 전달됩니다.
    • 사용자 동의 완료 시, 해당 사용자가 대표 앱도 가입한 상태라면, 대표 앱과 멤버 앱에게 계정 상태 변경 웹훅 전달
    • 사용자가 대표 앱을 가입하지 않았다면 멤버 앱으로만 웹훅 전달
  4. 멤버 앱공유 회원번호 조회 API로 공유 회원번호를 확인할 수 있습니다.

동의항목 설정에서 [이용 중 동의]를 선택하면 동의항목 추가 동의 요청 API 호출 시 scope 파라미터에 식별자 공유 그룹 IDshared_id:{SHARED_GROUP_ID} 형식으로 전달해야 합니다.

[필수 동의]을 선택한 경우, scope로 그룹 ID를 정의하지 않아도 동의화면에 노출됩니다.

curl -v -X GET "https://kauth.kakao.com/oauth/authorize?client_id=${REST_API_KEY}&redirect_uri=${REDIRECT_URI}&response_type=code&scope=shared_id:12345"

공유 회원번호 제공 동의를 철회하려면 동의항목 동의 철회 API 호출 시, scopes 파라미터에 shared_id:{SHARED_GROUP_ID} 형식으로 전달합니다.

curl -v -X POST "https://kapi.kakao.com/v2/user/revoke/scopes" \
-H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
--data-urlencode 'scopes=["shared_id:12345"]'
메서드URL인증 방식
GEThttps://kapi.kakao.com/v1/user/shared_user_id_info서비스 앱 어드민 키

사용자의 회원 번호로 공유 회원번호를 조회하거나, 공유 회원번호로 회원번호를 조회할 수 있습니다.

공유 회원번호 제공 조건을 참고합니다.

target_user_idshared_group_id 조합 또는 shared_user_id둘 중 하나만 전달해야 하며, 세 파라미터를 한 요청에 섞어 전달할 수 없습니다.

사용 파라미터설명
target_user_idshared_group_id해당 사용자의 shared_user_id 조회

제약 사항:
  • target_user_id는 서비스 앱 어드민 키에 해당하는 앱에 연결된 활성 상태인 사용자의 회원번호여야 함
  • shared_group_id는 서비스 앱 어드민 키에 해당하는 앱이 소속된 유효한 공유 그룹의 ID여야 함
  • shared_group_id에 해당하는 공유 그룹에 서비스 앱 어드민 키에 해당하는 앱이 유효한 참여 상태여야 함
  • target_user_id에 해당하는 사용자는 서비스 앱 어드민 키에 해당하는 앱에 대해 공유 회원번호 제공 동의를 한 상태여야 하며, 이때 shared_group_id에 해당하는 공유 그룹에 대해 동의한 상태여야 함
shared_user_id해당 공유 회원번호에 대응하는 user_idshared_group_id 조회

제약 사항:
  • shared_user_id에 해당하는 공유 회원번호 동의 내역이 존재해야 함
  • shared_user_id에 해당하는 공유 그룹이 유효한 상태여야 함
  • 서비스 앱 어드민 키에 해당하는 앱이 shared_user_id에 해당하는 공유 그룹에 유효한 참여 상태여야 함
  • shared_user_id에 해당하는 사용자는 서비스 앱 어드민 키에 해당하는 앱에 연결된 활성 상태인 사용자여야 함
이름설명필수
AuthorizationAuthorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}
인증 방식, 서비스 앱 어드민 키로 인증 요청
O
Content-TypeContent-Type: application/x-www-form-urlencoded;charset=utf-8
요청 데이터 타입
O
이름타입설명필수
target_user_idLong조회하고자 하는 사용자의 회원번호(user_id)

중요: shared_group_id 사용시 함께 전달 필수
O*
shared_group_idLong조회하고자 하는 식별자 공유 그룹 ID

중요: target_user_id 사용시 함께 전달 필수
O*
shared_user_idLong조회하고자 하는 공유 회원번호

중요: target_user_id, shared_group_id 없이 단독 전달
O*
* 둘 중 하나 필수: target_user_idshared_group_id를 함께 사용하거나, shared_user_id 전달
이름타입설명필수
user_idLong해당 사용자의 회원번호O
shared_group_idLong조회에 사용된 또는 조회된 공유 그룹 IDO
shared_user_idLong해당 사용자의 공유 회원번호O
curl -v -G "https://kapi.kakao.com/v1/user/shared_user_id_info" \
-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \
-H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
-d "target_user_id=${USER_ID}" \
-d "shared_group_id=${SHARED_GROUP_ID}"
curl -v -G "https://kapi.kakao.com/v1/user/shared_user_id_info" \
-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \
-H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
-d "shared_user_id=${SHARED_USER_ID}"
// HTTP/1.1 200 OK
{
"user_id": 123456789,
"shared_group_id": 68,
"shared_user_id": 987654321
}

계정 상태 변경 웹훅 기능을 사용하면 아래 이벤트 발생 시, 대표 앱과 멤버 앱은 공유 회원번호와 관련된 알림을 받을 수 있습니다.

웹훅 기능을 이용하려면 웹훅 구현 절차를 참고합니다.

  • 발생 시점: 멤버 앱에서 공유 회원번호 제공에 동의할 때
  • 이벤트 타입: User Scope Consent
  • 스키마: https://schemas.openid.net/secevent/oauth/event-type/user-scope-consent
  • 카테고리: OAUTH
  • 이벤트 페이로드:
    • scopes: 동의 화면에서 함께 동의한 동의항목
    • shared_id:{SHARED_GROUP_ID}: 공유 회원번호 동의항목
    • (예: account_email birthday age_range shared_id:1234)
  • 발생 시점: 멤버 앱에서 공유 회원번호 제공에 동의 철회할 때
  • 이벤트 타입: User Scope Withdraw
  • 스키마: https://schemas.openid.net/secevent/oauth/event-type/user-scope-withdraw
  • 카테고리: OAUTH
  • 이벤트 페이로드:
    • scopes: 동의 화면에서 함께 철회한 동의항목
    • shared_id:{SHARED_GROUP_ID}: 공유 회원번호 동의항목
    • (예: account_email birthday age_range shared_id:1234)
  • 발생 시점: 사용자가 멤버 앱에서 [공유 회원번호] 항목에 동의해 앱과 연결 시
    • 사용자가 카카오 로그인을 통해 대표 앱과 연결되어 있는 경우, 대표 앱에게도 이벤트 전달
  • 이벤트 타입: Shared Identity Linked
  • 스키마: https://schemas.kakao.com/platevent/kakao/event-type/user-shared-identity-linked
  • 카테고리: KAKAO
  • 이벤트 페이로드:
    • shared_group_id: 식별자 공유 그룹 ID
    • shared_user_id: 공유 회원번호
  • 발생 시점: 사용자가 멤버 앱에서 동의를 철회했거나 연결 해제 시
    • 사용자가 카카오 로그인을 통해 대표 앱과 연결되어 있는 경우, 대표 앱에게도 이벤트 전달
  • 이벤트 타입: Shared Identity Unlinked
  • 스키마: https://schemas.kakao.com/platevent/kakao/event-type/user-shared-identity-unlinked
  • 카테고리: KAKAO
  • 이벤트 페이로드:
    • shared_group_id: 식별자 공유 그룹 ID
    • shared_user_id: 공유 회원번호
{
"aud": "46e658413bbac2346e2b5d58afdfa343",
"sub": "1376016924431190203",
"iss": "https://kauth.kakao.com",
"txm": "d8dfd85e-2690-4306-8898-f93557afaae8",
"toe": 1774402955,
"iat": 1774402955,
"jti": "d7e9f084-53bf-4b39-abcd-d47df4af88b3",
"events": {
"https://schemas.kakao.com/platevent/kakao/event-type/user-shared-identity-unlinked": {
"subject": {
"sub": "1376016924431190203",
"subject_type": "iss-sub",
"iss": "https://kauth.kakao.com"
},
"shared_group_id": "111",
"shared_user_id": "1111"
}
}
}

이 문서는 이해를 돕기 위하여 아래와 같은 용어를 사용합니다.

용어설명
식별자 공유그룹으로 묶인 여러 서비스에서 동일한 사용자를 식별하기 위해 식별자(공유 회원번호)를 제공하는 기능
식별자 공유 그룹공유 회원번호를 함께 사용하는 서비스 앱들을 묶는 그룹
대표 앱과 멤버 앱으로 구성
공유 회원번호그룹 내에서 동일한 사용자에게 발급되는 공통 식별자 ID, 공유 회원번호 참고
대표 앱서비스의 기준이 되는 앱, 식별자 공유 그룹을 대표하는 앱, 그룹당 하나만 지정 가능
멤버 앱식별자 공유 그룹에 속한 앱, 대표 앱의 영향 받음
식별자 공유 그룹 ID그룹 단위를 식별하는 고유 ID, 식별자 공유 그룹 확인에서 확인 가능
  • 식별자 공유 그룹 내에서 동일한 사용자에게 발급되는 ID
  • 각 서비스마다 부여되는 고유 회원번호(Service user ID)와는 별도로, 그룹별로 발급 및 관리되는 식별자
  • 그룹에 속한 서비스들은 동일한 사용자에 대해 동일한 공유 회원번호를 갖게됨
  • 앱이 유효한 공유 그룹에 속해 있어야 합니다.
  • 사용자가 공유 그룹의 멤버 앱 중 최소 1개 이상에서 공유 회원번호 제공에 동의해야 합니다.
  • 사용자는 카카오 로그인 기능으로 앱에 연결되어 있어야 합니다.
  • 사용자는 활성 상태여야 합니다.
공유 회원번호 제약사항

  • 이 기능은 그룹 앱에 속한 서비스의 사용자 중 동일인을 식별하는 것이 목적입니다. 그 외 목적으로는 사용할 수 없습니다.
  • 서비스 간 동일 사용자 확인을 위해서는 카카오가 발급한 공유 회원번호를 기준으로 멤버 앱과 대표 앱이 직접 연동해야 합니다. 카카오가 두 서비스의 사용자를 대신하여 동일인 여부를 판별하거나 중계하는 기능은 제공하지 않습니다.
  • 멤버 앱끼리 공유 회원번호를 주고받거나 상호 조회할 수 없습니다.

  • 공유 회원번호를 함께 쓰는 서비스들을 묶는 그룹입니다.
  • 그룹 별로 그룹 ID가 부여되며, 이 그룹 ID는 다음 API 호출 시 사용됩니다.
  • 그룹에 속한 앱은 대표 앱과 멤버 앱으로 구분됩니다.
  • 일반적으로 대표 앱은 기준이 되는 서비스로 지정합니다. 아래 예시를 참고합니다.
    • 멤버십 서비스인 경우, A 멤버십이 대표 앱, 하위 브랜드 앱들을 멤버 앱으로 지정
    • 계약 관계인 경우, 가입 기준이 되는 서비스가 대표 앱, 영향 받는 서비스를 멤버 앱으로 지정
    • A 서비스 가입을 위해 B 서비스 가입이 필수인 경우, B 앱을 대표 앱, A 앱을 멤버 앱으로 지정
  • 대표 앱은 1개만 지정할 수 있고, 멤버 앱은 여러 개 지정할 수 있습니다.
  • 그룹 생성 시 지정한 대표 앱은 변경할 수 없습니다.
  • 하나의 앱은 하나의 그룹에만 소속될 수 있습니다. 즉, 어떤 앱이 대표 앱이나 멤버 앱으로 이미 그룹에 속해 있으면, 다른 그룹에는 소속할 수 없습니다.

도움이 되었나요?