페이지 이동경로
  • 문서>
  • 카카오싱크>
  • 약관 선택해 동의 받기

카카오싱크

약관 선택해 동의 받기

이 문서는 약관 선택해 동의 받기 API 사용 방법을 안내합니다.

약관 선택해 동의 받기는 사용자가 동의하지 않은 약관을 선택해 로그인 시 동의를 구할 수 있게 해주는 기능입니다. 카카오 로그인의 인가 코드 받기 단계에서 추가 파라미터를 사용해 기존 가입 여부와 관계없이 특정 서비스 약관의 동의를 요청할 수 있습니다.

이 기능은 크게 두 가지 상황에서 유용합니다.

  • 하나의 애플리케이션(이하 앱)을 여러 서비스에 사용하는 경우
  • 카카오싱크 서비스에 새로운 필수 약관이 추가된 경우

여러 서비스에서 동일한 회원 체계를 사용하는 멤버십(Membership) 등을 위해 하나의 앱으로 카카오싱크를 이용하는 경우가 있습니다. 이때, 각각 요구하는 약관 종류가 다를 수 있습니다. 앱 정보에 모든 서비스에 필요한 약관을 등록한 후, 약관 선택해 동의 받기 기능으로 사용자가 각 서비스에 로그인할 때 필요한 약관들만 동의받을 수 있습니다.

사용자가 한 번 카카오싱크 서비스에 로그인하면서 동의 과정을 거쳤다면, 새로운 필수 약관이 추가되더라도 동의 화면이 다시 나타나지 않습니다. 따라서 필수 약관이 추가되었다면, 사용자 로그인 시 동의한 약관 확인하기를 호출해 어떤 항목이 부족한지 비교하고, 추가 동의받아야 할 약관이 있을 때 약관 선택해 동의 받기 기능을 사용합니다. 동의받을 약관은 적용하기 시 등록했던 태그(tag)로 선택합니다.

이 기능을 사용해도 다음과 같은 상황에는 동의 화면이 다시 나타나지 않습니다:

  • 사용자가 이미 동의한 약관일 경우
  • 선택 약관만으로 요청된 경우
주의

약관 선택해 동의 받기를 위해 추가 파라미터를 사용한 경우, 동의받을 약관 태그 값이 비어 있으면 모든 서비스 약관을 노출하지 않습니다. 이 상태로 간편가입한 사용자는 모든 약관에 동의하지 않고 로그인하게 돼 서비스 이용에 문제가 생길 수 있습니다. 따라서 이 기능은 충분한 테스트를 거쳐 실제 서비스에 반영해야 합니다.

Web

웹 페이지에 Kakao SDK for JavaScript(이하 JavaScript SDK)를 import하고, Kakao.Auth.authorize API에 serviceTerms 파라미터를 포함하여 요청합니다. serviceTerms 파라미터의 값으로 동의받을 약관의 태그들을 하나의 문자열(String)로 모아 요청 시 전달합니다.

동의받을 서비스 약관만으로 구성된 동의 화면이 뜬다면 성공적으로 요청된 것입니다. 요청 성공 시 인가 코드 받기 API와 동일한 응답을 받으며, 응답으로 받은 인가 코드를 사용해 토큰 받기를 요청하여 새로 발급 받은 토큰을 사용해야 합니다.

Request
Parameter
Name Type Description Required
redirectUri String 인증코드를 받을 URI O
serviceTerms Sting 동의 받을 약관 태그, 쉼표(,)로 묶어 하나의 문자열로 전달 O
REST API 사용 시 파라미터명

REST API를 사용해 약관 선택해 동의 받기를 요청하려면, 인가 코드 받기 API를 호출할 때 service_terms 파라미터로 동의 받을 약관 태그를 전달합니다. 응답은 JavaScript SDK로 요청한 경우와 마찬가지로 인가 코드 받기 응답과 동일합니다.

Sample
Request
Kakao.Auth.authorize({
 redirectUri: 'https://developers.kakao.com/kakaoLogin.jsp',
 serviceTerms: 'tag1,tag2'
});
Response
HTTP/1.1 302 Found
Content-Length: 0
Location: {REDIRECT_URI}?code={AUTHORIZE_CODE}

Android

약관 선택해 동의 받기 API는 카카오 로그인의 추가 기능으로 카카오 로그인 모듈의 UserApiClient가 제공합니다. loginWithKakaoTalk() 또는 loginWithKakaoAccount() 요청 시 사용자에게 동의받을 약관의 태그를 serviceTerms 파라미터에 담아 약관 선택해 동의 받기 기능을 구현할 수 있습니다.

serviceTerms 파라미터를 포함하지 않으면 일반적인 카카오 로그인으로 API가 동작한다는 점에 주의합니다. 이 경우, 사용자에게 동의받을 약관을 지정할 수 없으며, 이미 모든 필수 약관에 동의한 사용자는 동의 화면을 거치지 않고 바로 로그인 완료됩니다.

Parameter
Name Type Description Required
serviceTerms List<String> 동의받을 약관 태그 O
Kotlin
RxKotlin
// 약관 선택해 동의 받기

// 개발자사이트 간편가입 설정에 등록한 약관 목록 중, 동의 받기를 원하는 약관의 태그 값을 지정합니다.
val serviceTerms = listOf("service")

// serviceTerms 파라미터와 함께 카카오톡으로 로그인 요청 (카카오계정으로 로그인도 사용법 동일)
UserApiClient.instance.loginWithKakaoTalk(
    context = context,
    serviceTerms = serviceTerms
) { token, error ->
    if (error != null) {
        Log.e(TAG, "로그인 실패", error)
    }
    else if (token != null) {
        Log.i(TAG, "로그인 성공 ${token.accessToken}")
    }
}
var disposables = CompositeDisposable()

// 약관 선택해 동의 받기

// 개발자사이트 간편가입 설정에 등록한 약관 목록 중, 동의 받기를 원하는 약관의 태그 값을 지정합니다.
val serviceTerms = listOf("service")

// serviceTerms 파라미터와 함께 카카오톡으로 로그인 요청 (카카오계정으로 로그인도 사용법 동일)
UserApiClient.rx.loginWithKakaoTalk(
    context = context,
    serviceTerms = serviceTerms
)
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({ token ->
        Log.i(TAG, "로그인 성공 ${token.accessToken}")
    }, { error ->
        Log.e(TAG, "로그인 실패", error)
    })
    .addTo(disposables)

약관 선택해 동의 받기의 요청 결과는 카카오 로그인과 같습니다.

Legacy Android

동의받을 약관의 태그들을 하나의 문자열에 쉼표(,)로 구분해 담아 로그인 요청 시 파라미터로 전달해야 합니다. 아래 예제를 참고합니다. 동의받을 서비스 약관만으로 구성된 동의 화면이 뜬다면 요청 성공입니다.

Sample
    import com.kakao.auth.StringSet;

     // 로그인 요청에 추가할 파라미터
    Map<String, String> parameters = new HashMap<>();

    // service_terms추가
    // ‘,’ 로 구분된 태그 문자열 ex) "tag1, tag2"
    parameters.put(StringSet.service_terms, "tag1,tag2");
    Session.getCurrentSession().open(AuthType.KAKAO_TALK, LoginActivity.this, parameters);

iOS

필요한 모듈 설정하기

약관 선택해 동의 받기 기능은 카카오 로그인 모듈인 KakaoSDKUserRxKakaoSDKUser가 제공합니다.

약관 선택해 동의 받기 기능을 사용하려면 카카오 로그인, 사용자 인증 모듈을 설치해야 합니다. 모듈 설치 방법은 설치하기를 참고합니다.

모듈 설치 후 약관 선택해 동의 받기 기능을 사용하려면 다음과 같이 import합니다.

Swift
RxSwift
import KakaoSDKAuth
import KakaoSDKUser
import KakaoSDKAuth
import RxKakaoSDKAuth

import KakaoSDKUser
import RxKakaoSDKUser

구현하기

카카오 로그인의 추가 파라미터를 사용해 약관 선택해 동의 받기 기능을 구현할 수 있습니다. loginWithKakaoTalk() 또는 loginWithKakaoAccount() 요청 시 사용자에게 동의 받을 약관의 태그를 serviceTerms 파라미터에 담아 전달합니다.

serviceTerms 파라미터를 포함하지 않으면 일반적인 카카오 로그인으로 API가 동작한다는 점에 주의합니다. 이 경우, 사용자에게 동의받을 약관을 지정할 수 없으며, 이미 모든 필수 약관에 동의한 사용자는 동의 화면을 거치지 않고 바로 로그인 완료됩니다.

Parameter
Name Type Description Required
serviceTerms String[] 동의받을 약관 태그 O
Swift
RxSwift
// service_terms추가
// ‘,’ 로 구분된 태그 문자열 ex) "tag1, tag2"
let serviceTerms = ["tag1", "tag2"]

UserApi.shared.loginWithKakaoAccount(serviceTerms: serviceTerms, completion: {(oauthToken, error) in
if let error = error {
        print(error)
    }
    else {
        print("loginWithKakaoAccount(serviceTerms:) success.")        
        //do something
        _ = oauthToken
    }
})
// Class member property
let disposeBag = DisposeBag()

// service_terms추가
// ‘,’ 로 구분된 태그 문자열 ex) "tag1, tag2"
let serviceTerms = ["tag1", "tag2"]

UserApi.shared.rx.loginWithKakaoAccount(serviceTerms: serviceTerms)
    .subscribe(onNext: { (oauthToken) in
        print("loginWithKakaoAccount(serviceTerms:) success.")        
        //do something
        _ = oauthToken
    }, onError: {error in
        print(error)
    })
.disposed(by: disposeBag)

약관 선택해 동의 받기의 요청 결과는 카카오 로그인과 같습니다.

Legacy iOS

예제와 같이 원하는 약관의 태그들을 담은 파라미터를 카카오 로그인 요청 시 전달합니다. 동의받을 서비스 약관만으로 구성된 동의 화면이 뜬다면 요청 성공입니다.

Sample
    // 로그인 요청에 추가할 파라미터
    var parameters: [String: String] = [:]

    // service_terms추가
    // ‘,’ 로 구분된 태그 문자열 ex) "tag1, tag2"
    parameters[KOSessionExtraServiceTermsParameterKey] = <#serviceTermsTags#>

    KOSession.shared()?.open(completionHandler: { (error) in
        // 로그인 콜백 처리
        <#code#>
    }, parameters: parameters)

더보기

Web

Android

iOS