페이지 이동경로
  • 문서>
  • 카카오톡 소셜>
  • Android

카카오톡 소셜

Android

이 문서는 Kakao SDK for Android(이하 Android SDK)를 사용한 카카오톡 소셜 API 구현 방법을 안내합니다.

애플리케이션 설정 확인

이 기능을 사용하려면 카카오디벨로퍼스(Kakao Developers, 이하 개발자 웹사이트) 애플리케이션(이하 앱) 설정에 Android 플랫폼 및 키 해시 등 정보가 등록되어 있어야 합니다. 자세한 내용은 애플리케이션 등록을 참고합니다.

이 문서에 사용된 태그

Tag Description
로그인 필수 카카오 로그인이 필요한 API를 의미합니다. 카카오 로그인을 먼저 구현하고, 카카오 로그인을 통해 발급 받은 액세스 토큰(Access Token)을 이용하여 해당 API를 호출해야 합니다.

시작하기 전에

필요한 모듈 설정하기

카카오톡 소셜 API는 카카오톡 모듈의 TalkApiClient가 제공합니다. 필요한 모듈 설정하기를 참고하여 build.gradle(Module) 파일에 카카오 로그인 모듈인 v2-user, 카카오톡 모듈인 v2-talk을 추가합니다.

프로필 가져오기 로그인 필수

동의 항목 설정 필요

이 API를 사용하려면 동의 항목 설정을 참고하여 '프로필' 동의 항목을 설정해야 합니다.

현재 로그인한 사용자의 카카오톡 프로필 정보를 받습니다. TalkApiClientprofile() API를 호출합니다.

Kotlin
RxKotlin
// 카카오톡 프로필 가져오기
TalkApiClient.instance.profile { profile, error ->
    if (error != null) {
        Log.e(TAG, "카카오톡 프로필 가져오기 실패", error)
    }
    else if (profile != null) {
        Log.i(TAG, "카카오톡 프로필 가져오기 성공" +
                "\n닉네임: ${profile.nickname}" +
                "\n프로필사진: ${profile.thumbnailUrl}")
    }
}
var disposables = CompositeDisposable()

// 카카오톡 프로필 가져오기
TalkApiClient.rx.profile()
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({ profile ->
        Log.i(TAG, "카카오톡 프로필 가져오기 성공" +
                "\n닉네임: ${profile.nickname}" +
                "\n프로필사진: ${profile.thumbnailUrl}") 
    }, { error ->
        Log.e(TAG, "카카오톡 프로필 가져오기 실패", error)
    }).addTo(disposables)

요청이 성공하면 TalkProfile 객체로 카카오톡 프로필 정보를 받습니다. 카카오톡 프로필 정보의 구성에 대해서는 REST API 가이드 또는 레퍼런스를 참고합니다.

countryISO

2021년 6월 1일부터 카카오톡 프로필 가져오기 API의 응답에서 'countryISO'(사용자가 카카오톡을 이용 중인 국가)가 더 이상 제공되지 않습니다. 자세한 사항은 데브톡을 참고합니다.

친구 목록 가져오기 로그인 필수

동의 항목 설정 및 권한 필요

이 API를 사용하려면 동의 항목 설정을 참고하여 '카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함)' 동의 항목을 설정해야 합니다. 또한 이 API는 사용 권한이 필요합니다. 앱에 사용 권한이 부여되기 전에는 팀원을 대상으로만 동작하므로, 카카오톡 사용 권한 신청을 참고해 사용 권한을 신청해야 합니다.

현재 로그인한 사용자의 카카오톡 친구 목록을 불러옵니다. TalkApiClientfriends() API를 호출합니다. 요청 시 친구 목록의 정렬 순서, 한 페이지당 친구 수를 선택적으로 지정할 수 있습니다. 파라미터 없이 요청 시 기본 설정대로 요청이 전송됩니다.

Parameter
Name Type Description Required
offset Int 친구 리스트 시작 지점(기본값: 0) X
limit Int 한 페이지에 가져올 친구 최대 수(기본값: 10, 최댓값: 100) X
order Order 친구 리스트 정렬 순서, 오름차순("asc") 또는 내림차순("desc")(기본값: "asc") X
friendOrder FriendOrder 친구 목록 정렬 시, 즐겨찾기 친구의 우선 정렬 또는 닉네임 순서 정렬로 기준 설정
즐겨찾기 친구(FAVORITE) 또는 카카오톡 닉네임(NICKNAME)(기본값 FAVORITE)
X
Sample: 기본 설정으로 카카오톡 친구 정보 요청
Kotlin
RxKotlin
// 카카오톡 친구 목록 가져오기 (기본)
TalkApiClient.instance.friends { friends, error ->
    if (error != null) {
        Log.e(TAG, "카카오톡 친구 목록 가져오기 실패", error)
    }
    else if (friends != null) {
        Log.i(TAG, "카카오톡 친구 목록 가져오기 성공 \n${friends.elements.joinToString("\n")}")

        // 친구의 UUID 로 메시지 보내기 가능
    }
}
var disposables = CompositeDisposable()

// 카카오톡 친구 목록 가져오기 (기본)
TalkApiClient.rx.friends()
    .retryWhen(
        // InsufficientScope 에러에 대해 추가 동의 후 재요청
        RxAuthOperations.instance.incrementalAuthorizationRequired(context)
    )
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe({ friends ->
        Log.i(TAG, "카카오톡 친구 목록 가져오기 성공 \n${friends.elements.joinToString("\n")}")

        // 친구의 UUID 로 메시지 보내기 가능
    }, { error ->
        Log.e(TAG, "카카오톡 친구 목록 가져오기 실패", error)
    })
    .addTo(disposables)

요청 성공 시 Friends 객체를 응답으로 받습니다. Friends 객체는 각 친구의 정보를 담은 Friend 객체의 리스트(List)로 구성되어 있습니다. 자세한 카카오톡 친구 정보 구성에 대해서는 REST API 가이드 또는 레퍼런스를 참고합니다.

만약 사용자가 카카오톡 친구 목록 제공에 동의하지 않아 요청이 실패한 경우, 다음 내용을 참고해 사용자 동의를 받은 후 다시 요청합니다:

  • 동의 항목에 '카카오 서비스 내 친구목록'을 사용하도록 설정했는지 확인합니다.
  • 추가 항목 동의 받기를 사용해 '카카오 서비스 내 친구목록'의 사용자 동의를 받습니다.

Legacy

친구의 Legacy Kakao SDK for Android(이하 Legacy Android SDK) 개발 가이드는 다음 링크에서 확인할 수 있습니다. 추후 Legacy Android SDK에 대한 지원이 중단될 수 있으므로, 가급적 빠른 시일 내에 최신 버전 Android SDK로 변경할 것을 권장합니다.

더보기