기본적인 프로세스가 아래가 맞는지요?

안녕하세요. 카카오싱크 도입을 준비중인데.
일전에도 한번 문의 드렸는데… 다시 한번 문의를 드립니다.

1] 큰 흐름은 아래가 맞는지요?
간편로그인 요청
=> 사용자 동의(필수항목 / 선택항목)
=>사용자 동의 항목 Return
=> 서비스 동의 항목 조회(Optional) => 자사 서비스에서 업데이트
=> 플친 관계 조회(Optional) => 자사 서비스에서 업데이트
=> 끝

2] 약관 동의 경우에 수에 대한 부분
2-1] 기존 카카오 로그인 가입자
카카오 간편로그인 호출
/oauth/authorize?client_id={app_key}&redirect_uri={redirect_uri}&response_type=code HTTP/1.1

    자동으로 추가적인 약관(카카오 약관 + 플친 등)  만 노출되어 동의를 받는다.

2-2] 카카오 로그인 미가입자 , 완전 신규
카카오 간편로그인 호출
/oauth/authorize?client_id={app_key}&redirect_uri={redirect_uri}&response_type=code HTTP/1.1

 자동으로 전체약관(카카오약관 + 서비스약관+ 플친 등...) 노출 되어 동의를 받는다.

즉, 2-1] 이든 2-2]든 동일한 /oauth/authorize?client_id= 를 호출하면,
카카오에서 판단 후 전체약관을 보여줄지 일부 약관을 보여줄지를 판단한다.

3] 동적약관이라고 들은것 같은데…
좀 구체적으로 설명을 들을 수 있는지요?

1개의 좋아요

동적 동의(약관)이란, 사용자가 동의를 하지 않는 것에 대해서, 추후에 동의를 받을 수 있는 API입니다.
예를들어 이메일 개인정보 제3자 제공 동의가 있는데, 이 속성을 선택으로 제공한다고 할때, 사용자가 선택을 하지 않은 경우에 해당합니다. 나중에 이용을 하기 위해 사용자한테 별도로 동의를 동적으로 다시 띄우는 과정입니다.

가이드는 동적 동의 을 참고하시면 될것 같아요.

위 가이드의 예시는 메시지 전송등을 위해 API를 호출했는데, 사용자가 동의를 하지 않았다는 insufficient scopes. 에러가 발생하고, 이를 동적 동의로 다시 사용자에게 요청하여 받는 과정입니다.

GET /oauth/authorize?client_id={app_key}&redirect_uri={redirect_uri}&response_type=code&scope={required_scopes.join(',')} HTTP/1.1
Host: kauth.kakao.com

또한 아래의 사용자 정보 요청 가이드에도 동적 동의에 대한 설명이 있습니다.



    설정 > 사용자 관리 > 동의항목 에서 '개인정보 보호항목'에 이메일/연령대/생일/성별 보이는지 확인합니다.
    보이지 않는다면, 수집목적을 작성하고 필요한 항목을 설정합니다.

    1) 사용자 정보 요청 API 응답에 값(kakao_account.XXX)이 있는지 확인합니다.

        kakao_account.XXX이 있다면 해당 값을 사용 (2번 진행 불필요)

        kakao_account.XXX이 없다면 아래 2번 진행

    2) kakao_account.XXX_needs_agreement 값으로 동의가 필요한지를 판단합니다.

        true: 정보 제공 동의 후 값을 얻을 수 있는 상태입니다. 필요 시 동적동의를 요청하면 됩니다. 동적동의 시 전달할 scope은 설정 > 사용자 관리 > 동의항목 에 표기되어 있습니다.

        false: 정보 제공 동의 여부와 관련 없이 값을 얻을 수 없는 상태(카카오계정에 값이 없는 경우 등)입니다. 필요 시 자체 수집 플로우를 구현하시면 됩니다.


    [참고 사항]

    카카오는 최선을 다해 사용자의 개인정보를 보호하고 있습니다. 따라서 개인정보는 다음의 2가지 조건을 만족해야 제공됩니다.

    사용자가 카카오에 수집 동의를 한 후, 카카오가 사용자로부터 받은 개인정보여야 합니다.

        카카오계정이 해당 정보를 보유하고 있어야 합니다. 카카오가 보유하고 있지 않는 정보는 제공될 수 없기 때문에 직접 수집하셔야 합니다.

    사용자가 제3자 정보 제공 동의를 한 개인정보여야 합니다.

        카카오가 보유한 개인정보라 할지라도 사용자가 명확히 제3자 정보 제공에 동의를 하여야 합니다. needs_agreement는 해당 상태를 의미합니다.


요약) 설명이 복잡해 보일 수 있는데, 쉽게 말해서, API 요청시 동의가 필요하다는 에러 발생시, 또는 kakao_account.XXX_needs_agreement 값을 통해, 다시 동의 요청(동의 받고자 하는 항목과 함께)을 하는 것입니다.

네.동적약관에 대한 부분은 이해했습니다.

제가 질문한 1] , 2]에 대한 답변도 부탁드리겠습니다.

빠른 답변 감사합니다.

  • 사용자 동의 항목 return: /user/me API를 요청하시어 사용자의 정보를 3rd-party가 받아 갑니다.
  • 서비스 동의 항목 조회(Optional): 3rd-party service term을 카카오가 hint로 대신 받아 주기 때문에 사용자 개인정보와 비슷하게 어떤 3rd-party service term을 받아 갔는지 확인하고, 3rd-party에서 참고하시어 회원처리를 합니다.
  • 플친 관계 조회(Optional): 플친 관계쪽은 제가 정확히 잘 모르겠어요. 플친 관련 처리가 필요하실 경우 비슷하게 하시면 될것 같아요.

2-1의 경우 기존 회원자이기 때문에 추가 동의가 뜨지 않습니다. 물론 카카오쪽의 필수 항목에 대해 동의가 안된 유저의 경우(엣지 케이스. 보통 특정 항목을 enable하지 않았다가 후에 enable을 하였고, 필수로 설정하였을 경우)는 해당 항목에 대해 추가 동의가 뜹니다. 즉, 핵심은 카카오쪽에서 동의창 UI/UX가 뜨는 시점이라면 2-2와 같은데, 이 케이스는 엣지 케이스이기 떄문에, 일반적으로는 구 가입자는 추가 동의창이 뜨지 않는다고 보시면 될것 같습니다.
2-2의 경우 맞습니다.

답변이 되었나 모르겠네요.

cc @jeremy.kim @lars.1 @dan.jwp

안녕하세요. 빠른 답변 감사드립니다.

그런데, 2-1]의 경우

기존 카카카오 간편로그인(싱크X) 로 가입한 사용자가
카카오 싱크로 전환 후
싱크 약관 동의를 받으려 할경우를 말씀드린것인데,
추가 동의 창이 안뜨는게 맞는건지요?

@mobile.digitaldigm 네 현재 기능 동작으로는 추가 약관이 뜨지 않습니다. 다만, 이 경우도 3rd-party 서비스에서 추가 약관을 받을 수 있는 기능적 옵션을 제공하려고 준비중에 있습니다.
현재 기능 동작에서는 2-1의 경우 service term 조회시 약관 동의가 확인되지 않을것 같아요(추가 동의가 뜨지 않으므로).
다만 추후 새로운 옵션을 적용하면, 2-1의 경우도 3rd-party service term을 본적이 없는 사용자에 대해 추가 약관을 띄워 주는 것을 제공하려고 합니다.

cc @lars.1 @jeremy.kim