페이지 이동경로
  • 문서>

채널 관계 확인하기

채널 관계 확인하기는 특정 사용자가 앱과 연동된 카카오톡 채널을 추가 또는 차단했는지 확인하는 기능입니다. 이 API는 요청을 보낸 앱과 연결된 카카오톡 채널에 한해서만 관계를 알려줍니다. 따라서 사용자가 추가한 모든 카카오톡 채널 정보를 전달 받을 수는 없고, 서비스와 관계 있는 채널에 한해 관계를 알 수 있습니다.

Web

Request

  • URL
Method Request URL
GET https://kapi.kakao.com/v1/api/talk/plusfriends
  • Header-Access Token
Name Required Description
Authorization Y 헤더 포맷
Authorization: Bearer ${access_token}
  • Sample: Access Token
curl -v -X GET https://kapi.kakao.com/v1/api/talk/plusfriends \
-H "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: Admin Key
curl -v -X GET 'https://kapi.kakao.com/v1/api/talk/plusfriends&target_id_type=user_id&target_id=1111111' \
-H "Authorization: KakaoAK ${admin_key}"

사용자 액세스 토큰(Access Token)으로 GET 요청을 보냅니다.

관리자라면 앱별 어드민 키(Admin Key)로 특정 사용자의 카카오톡 채널 관계를 확인할 수도 있습니다. 어드민 키와 사용자 ID로 요청할 경우 아래 예제와 파라미터 정보를 참고해 서비스 서버에서 요청합니다. 어드민 키는 일종의 마스터 키(Master Key)이므로 서버에서만 사용해야 합니다.

Response

  • Success
HTTP/1.1 200 OK
{
 "user_id": 1111111
 "plus_friends": [
  {
   "plus_friend_public_id": "_aTSxexl",
   "plus_friend_uuid": "@테스트",
   "relation": "ADDED",
   "updated_at": "2019-05-10T08:06:53Z"
  }
 ]
}
  • Key
Field Type Description
user_id Long 사용자 ID
plus_friends Array of PlusFriendInfo 채널과 사용자 관계
  • plus_friends
Field Type Description
plus_friend_public_id String 채널 Public ID
relation String 채널과 사용자 관계
친구 추가(ADDED), 관계 없음(NONE), 차단(BLOCKED)
updated_at Datetime 상태 변경 시간, UTC
(RFC3339 internet date/time format)

요청 응답은 JSON 형식입니다. 사용자가 추가 또는 차단한 카카오톡 채널 중, 서비스 앱과 연결된 채널에 한해 응답에 포함됩니다. 응답의 각 채널 정보는 사용자가 현재 채널을 추가했는지 아닌지, 언제 채널 관계가 변경되었는지 자세한 정보를 포함합니다.

카카오톡 미사용자라면? 해당 카카오계정 사용자가 카카오톡을 쓰지 않는다면 채널을 추가할 수 없어서 아래와 같은 응답이 옵니다.

    HTTP/1.1 400 Bad Request
    {
        "msg": "given account is not connected to any talk user.",
        "code": -501
    }
    

iOS

Request

KOSessionTask.talkPlusFriendsTask(completionHandler: { (plusFriends, error) in
  if let plusFriends = plusFriends {
    // 성공
  } else if let error = error as NSError? {
    // 실패
    switch (error.code) {
    case Int(KOErrorCancelled.rawValue):
      // 채널 정보 제공 동의 취소
      break
    case Int(KOServerErrorNotTalkUser.rawValue):
      // 카카오톡 유저가 아님
      break
    default:
      // 기타 에러
      break
    }
  }
})

사용자가 로그인한 상태에서 위와 같이 호출합니다.

Android

Request

안드로이드 SDK에 아래와 같이 카카오 SDK 의존성 설정이 돼 있는지 확인합니다.
  • 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'
    // 카카오톡
    implementation 'com.kakao.sdk:kakaotalk:1.17.0'
    }
  • Sample
KakaoTalkService.getInstance().requestPlusFriends(new
TalkResponseCallback<PlusFriendsResponse>() {
  @Override
  public void onNotKakaoTalkUser() {
    // 카카오톡 유저가 아님
  }

  @Override
  public void onSessionClosed(ErrorResult errorResult) {
    // 자동 가입이 켜진 상태이기 때문에 이 블록은 진입하지 않는다.
  }

  @Override
  public void onNotSignedUp() {
    // 들어오지 않음
  }

  @Override
  public void onFailure(ErrorResult errorResult) {
    // 그 외 에러
  }

  @Override
  public void onSuccess(PlusFriendsResponse result) {
    // 성공적으로 플친 관계를 확인한 경우
  }
});

사용자가 로그인한 상태에서 com.kakao.kakaotalk.v2 패키지의 KakaoTalkService 클래스를 사용해 채널 관계 확인하기를 요청합니다. 성공 Callback의 PlusFriendsResponse는 REST API의 응답과 같은 내용을 포함합니다.