페이지 이동경로
  • 문서>

동의한 약관 확인하기

카카오싱크 간편가입은 카카오 플랫폼에서 제공되는 UI(User Interface)를 통해 정보 제공 동의 및 이용약관 한 번에 동의 받아 사용자를 가입시킬 수 있게 하는 기능입니다. 카카오싱크 신청 시 입력한 이용약관은 앱 정보에 등록되고 간편가입 화면에 실려 로그인한 사용자에게 제공됩니다.

하지만 카카오계정 사용자를 기존 회원 정보와 연동(Mapping)하려는 경우, 카카오계정 로그인 시 동의 받은 항목과 자체 회원가입 시 동의 받는 약관의 종류가 다를 수 있습니다. 이에 대처하기 위한 기능으로 서비스 약관 동의 여부를 조회하는 동의한 약관 확인하기 API가 제공됩니다.

동의한 약관 확인하기는 사용자가 어떤 약관들에 동의한 상태인지 파악할 수 있게 해주는 기능입니다. 이 기능은 특정 사용자가 어떤 약관들에 동의하고 로그인했는지 알려줍니다. 애플리케이션(이하 앱) 설정에 등록된 약관들은 각각 태그(tag)를 가지고 있는데, 동의한 약관 확인하기 기능을 써서 사용자가 동의한 약관 태그를 알 수 있습니다.

사용자별 응답과 전체 이용약관을 비교해 추가로 동의 받을 항목이 있는지 확인합니다. 필요 시 서비스에서 자체적으로 약관 동의 절차를 거치도록 구현합니다.

동의한 약관 확인하기 기능 활용 예시
자체적으로 추가 약관에 동의 받는 과정을 카카오싱크 기능으로 대체할 수는 없나요? 사용자가 서비스 이용을 위해 반드시 동의해야 하는 이용약관을 추가해야 할 경우, 고객센터를 통해 요청할 수 있습니다. 이용약관 추가 요청은 카카오싱크 신청과 마찬가지로 검수를 거쳐 적용되며, 추가 등록 완료 후 약관 선택해 동의 받기 기능을 통해 사용자에게 동의를 요청할 수 있습니다.

Web

Request

  • URL
Method Request URL Description
GET https://kapi.kakao.com/v1/user/service/terms 동의한 약관 보기
  • Header-Access Token
Name Required Description
Authorization Y 헤더 포맷
Authorization: Bearer ${access_token}
  • Header-Admin Key
Name Required Description
Authorization Y 헤더 포맷
Authorization: KakaoAK {admin_key}
  • Param-Admin Key
Key Description Required
target_id_type 사용자 ID 타입, user_id로 고정 O
target_id 사용자 ID O
  • Sample: Access Token
curl -v -X GET https://kapi.kakao.com/v1/user/service/terms \
-H "Authorization: Bearer ${access_token}"
  • Sample: Admin Key
curl -v -X GET "https://kapi.kakao.com/v1/user/service/terms?target_id_type=user_id&target_id=111111" \
-H "Authorization: KakaoAK {admin_key}"

사용자 로그인 상태에서 액세스 토큰(Access Token)을 이용하는 API 호출 정보와 예제입니다.

관리자가 특정 사용자의 서비스 약관 동의 내역을 확인하려면 서버에서 어드민 키(Admin key)와 사용자 ID로 요청할 수 있습니다. 어드민 키는 앱의 마스터 키와도 같으니 꼭 서버에서 호출할 때만 사용해야 합니다. 추가 파라미터 target_id_type, target_id 두 가지 모두 필수로 전달해야 합니다.

Response

  • Sample
{
 "user_id": 111111,
 "allowed_service_terms": [
  {
   "tag": "service_20190101",
   "agreed_at": "2019-05-10T10:33:26Z"
  },
  {
   "tag": "privacy_20190102",
   "agreed_at": "2019-05-10T10:33:26Z"
  }
 ]
}
  • Key
Field Type Description
user_id Long 사용자 고유 ID
allowed_service_terms Array of AllowTerms 사용자가 동의한 서비스 약관 항목 목록
  • AllowedTerms
Field Type Description
tag String 서비스 약관에 설정된 태그(tag)
agreed_at Datetime 사용자가 해당 약관에 마지막으로 동의한 시간
(RFC3339 internet date/time format)

응답은 사용자 ID와 약관 태그, 각 약관에 마지막으로 동의한 시간 정보를 포함합니다. 사용자가 서비스를 탈퇴하고 앱과의 연결을 끊은 뒤 로그인하면 다시 간편가입 기능을 통한 동의 절차를 거칩니다. 이에 따라 약관에 동의한 시간 정보가 갱신됩니다.

iOS

Request

  • Sample
KOSessionTask.serviceTermsTask(completionHandler: { (serviceTerms, error) in
  if let serviceTerms = serviceTerms {
    // 성공
  } else {
    // 실패
  }
})

사용자가 동의한 약관을 확인하려면 로그인 상태에서 위와 같이 호출합니다.

Response

응답은 REST API와 같습니다.

Android

Response

이 기능을 사용하려면 다음 두 가지 의존성 설정이 필요하고, 사용자가 카카오계정으로 로그인한 상태여야 합니다.

  • 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.17.0'
}
  • Sample
UserManagement.getInstance().serviceTerms(new
  ApiResponseCallback<ServiceTermsResponse>() {
    @Override
    public void onSessionClosed(ErrorResult errorResult) {
      // 재 로그인이 필요한 상태
      // 토큰 만료, 계정 인증 정보 변경 등
    }
    @Override
    public void onNotSignedUp() {
      // 자동 가입이 켜진 상태이기 때문에 이 블록은 진입하지 않는다.
    }
    @Override
    public void onFailure(ErrorResult errorResult) {
      // 기타 에러
    }
    @Override
    public void onSuccess(ServiceTermsResponse result) {
      // 성공 콜백
    }
});

사용자가 동의한 약관 정보는 ApiResponseCallback*을 구현하여 *UserManagement.serviceTerms 메소드로 요청합니다.

Response

응답은 REST API와 같습니다.