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

카카오톡 소셜

Android

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

프로필 가져오기

기본 정보
레퍼런스 앱 설정
[SDK, RxSDK] profile()
[SDK] TalkProfile
설치
초기화
권한 사전 설정 카카오 로그인 동의항목
- 플랫폼 등록
카카오 로그인 활성화
동의항목
필요 필요:
프로필 정보(닉네임/프로필 사진)
닉네임
프로필 사진

현재 로그인한 사용자의 카카오톡 프로필 정보를 받습니다.

요청

TalkApiClientprofile() API를 호출합니다.

응답

요청이 성공하면 TalkProfile 객체로 카카오톡 프로필 정보를 받습니다. 카카오톡 프로필 정보의 구성에 대해서는 REST 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)

피커: 친구 선택하기

기본 정보
레퍼런스 앱 설정
[SDK, RxSDK] selectFriend()
[SDK, RxSDK] selectFriends()
[SDK, RxSDK] selectFriendPopup()
[SDK, RxSDK] selectFriendsPopup()
[SDK] SelectedUsers
설치
초기화
권한 사전 설정 카카오 로그인 동의항목
필요:
사용 권한
플랫폼 등록
카카오 로그인 활성화
동의항목
필요 필요:
카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함)

사용자가 카카오톡 친구를 선택할 수 있는 피커를 호출합니다.

요청

선택 유형과 화면 표시 형태에 따라 호출해야 할 메서드가 다르므로, 다음 중 서비스의 필요에 맞는 메서드를 선택해 사용합니다.

화면 표시 형태 선택 유형 메서드
풀 스크린 싱글 피커 selectFriend()
풀 스크린 멀티 피커 selectFriends()
팝업 싱글 피커 selectFriendPopup()
팝업 멀티 피커 selectFriendsPopup()

피커의 구성 요소는 파라미터를 사용해 선택적으로 지정할 수 있습니다.

응답

사용자가 피커 화면에서 친구 선택을 완료하면 선택한 사용자 수와 친구의 정보인 SelectedUsers 객체가 반환됩니다. 해당 객체는 선택된 각 친구의 정보를 SelectedUser 객체의 배열로 포함합니다. 요청에 실패했거나 문제가 발생한 경우 문제 해결에서 원인을 확인합니다.

예제

풀 스크린
싱글 피커: Kotlin
멀티 피커: Kotlin
싱글 피커: RxKotlin
멀티 피커: RxKotlin
// 파라미터 설정
val openPickerFriendRequestParams = OpenPickerFriendRequestParams(
    title = "싱글 피커", // 피커 이름
    viewAppearance = ViewAppearance.AUTO, // 피커 화면 모드
    orientation = PickerOrientation.AUTO, // 피커 화면 방향
    enableSearch = true, // 검색 기능 사용 여부
    enableIndex = true, // 인덱스뷰 사용 여부
    showFavorite = true // 즐겨찾기 친구 표시 여부
)

// 피커 호출
PickerClient.instance.selectFriend(
    context = context!!,
    params = openPickerFriendRequestParams
) { selectedUsers, error ->
    if (error != null) {
        Log.e(TAG, "친구 선택 실패", error)
    } else {
        Log.d(TAG, "친구 선택 성공 $selectedUsers")
    }
}
val openPickerFriendRequestParams = OpenPickerFriendRequestParams(
    title = "멀티 피커", // 피커 이름
    viewAppearance = ViewAppearance.AUTO, // 피커 화면 모드
    orientation = PickerOrientation.AUTO, // 피커 화면 방향
    enableSearch = true, // 검색 기능 사용 여부
    enableIndex = true, // 인덱스뷰 사용 여부
    showFavorite = true, // 즐겨찾기 친구 표시 여부
    showPickedFriend = true, // 선택한 친구 표시 여부, 멀티 피커에만 사용 가능
    maxPickableCount = 5, // 선택 가능한 최대 대상 수
    minPickableCount = 1 // 선택 가능한 최소 대상 수
)

PickerClient.instance.selectFriends(
    context = context!!,
    params = openPickerFriendRequestParams
) { selectedUsers, error ->
    if (error != null) {
        Log.e(TAG, "친구 선택 실패", error)
    } else {
        Log.d(TAG, "친구 선택 성공 $selectedUsers")
    }
}
val openPickerFriendRequestParams = OpenPickerFriendRequestParams(
    title = "싱글 피커", // 피커 이름
    viewAppearance = ViewAppearance.AUTO, // 피커 화면 모드
    orientation = PickerOrientation.AUTO, // 피커 화면 방향
    enableSearch = true, // 검색 기능 사용 여부
    enableIndex = true, // 인덱스뷰 사용 여부
    showFavorite = true // 즐겨찾기 친구 표시 여부
)

PickerClient.rx.selectFriend(
    context = context!!,
    params = openPickerFriendRequestParams
).subscribe({ selectedUsers ->
    Log.d(TAG, "친구 선택 성공 $selectedUsers")
}, { error ->
    Log.e(TAG, "친구 선택 실패", error)
}).addTo(disposables)
val openPickerFriendRequestParams = OpenPickerFriendRequestParams(
    title = "멀티 피커", // 피커 이름
    viewAppearance = ViewAppearance.AUTO, // 피커 화면 모드
    orientation = PickerOrientation.AUTO, // 피커 화면 방향
    enableSearch = true, // 검색 기능 사용 여부
    enableIndex = true, // 인덱스뷰 사용 여부
    showFavorite = true, // 즐겨찾기 친구 표시 여부
    showPickedFriend = true, // 선택한 친구 표시 여부, 멀티 피커에만 사용 가능
    maxPickableCount = 5, // 선택 가능한 최대 대상 수
    minPickableCount = 1 // 선택 가능한 최소 대상 수
)

PickerClient.rx.selectFriends(
    context = context!!,
    params = openPickerFriendRequestParams
).subscribe({ selectedUsers ->
    Log.d(TAG, "친구 선택 성공 $selectedUsers")
}, { error ->
    Log.e(TAG, "친구 선택 실패", error)
}).addTo(disposables)
팝업
싱글 피커: Kotlin
멀티 피커: Kotlin
싱글 피커: RxKotlin
멀티 피커: RxKotlin
val openPickerFriendRequestParams = OpenPickerFriendRequestParams(
    title = "싱글 피커", // 피커 이름
    viewAppearance = ViewAppearance.AUTO, // 피커 화면 모드
    orientation = PickerOrientation.AUTO, // 피커 화면 방향
    enableSearch = true, // 검색 기능 사용 여부
    enableIndex = true, // 인덱스뷰 사용 여부
    showFavorite = true // 즐겨찾기 친구 표시 여부
)

PickerClient.instance.selectFriendPopup(
    context = context!!,
    params = openPickerFriendRequestParams
) { selectedUsers, error ->
    if (error != null) {
        Log.e(TAG, "친구 선택 실패", error)
    } else {
        Log.d(TAG, "친구 선택 성공 $selectedUsers")
    }
}
val openPickerFriendRequestParams = OpenPickerFriendRequestParams(
    title = "멀티 피커", // 피커 이름
    viewAppearance = ViewAppearance.AUTO, // 피커 화면 모드
    orientation = PickerOrientation.AUTO, // 피커 화면 방향
    enableSearch = true, // 검색 기능 사용 여부
    enableIndex = true, // 인덱스뷰 사용 여부
    showFavorite = true, // 즐겨찾기 친구 표시 여부
    showPickedFriend = true, // 선택한 친구 표시 여부, 멀티 피커에만 사용 가능
    maxPickableCount = 5, // 선택 가능한 최대 대상 수
    minPickableCount = 1 // 선택 가능한 최소 대상 수
)

PickerClient.instance.selectFriendsPopup(
    context = context!!,
    params = openPickerFriendRequestParams
) { selectedUsers, error ->
    if (error != null) {
        Log.e(TAG, "친구 선택 실패", error)
    } else {
        Log.d(TAG, "친구 선택 성공 $selectedUsers")
    }
}
val openPickerFriendRequestParams = OpenPickerFriendRequestParams(
    title = "싱글 피커", // 피커 이름
    viewAppearance = ViewAppearance.AUTO, // 피커 화면 모드
    orientation = PickerOrientation.AUTO, // 피커 화면 방향
    enableSearch = true, // 검색 기능 사용 여부
    enableIndex = true, // 인덱스뷰 사용 여부
    showFavorite = true // 즐겨찾기 친구 표시 여부
)

PickerClient.rx.selectFriendPopup(
    context = context!!,
    params = openPickerFriendRequestParams
).subscribe({ selectedUsers ->
    Log.d(TAG, "친구 선택 성공 $selectedUsers")
}, { error ->
    Log.e(TAG, "친구 선택 실패", error)
}).addTo(disposables)
val openPickerFriendRequestParams = OpenPickerFriendRequestParams(
    title = "멀티 피커", // 피커 이름
    viewAppearance = ViewAppearance.AUTO, // 피커 화면 모드
    orientation = PickerOrientation.AUTO, // 피커 화면 방향
    enableSearch = true, // 검색 기능 사용 여부
    enableIndex = true, // 인덱스뷰 사용 여부
    showFavorite = true, // 즐겨찾기 친구 표시 여부
    showPickedFriend = true, // 선택한 친구 표시 여부, 멀티 피커에만 사용 가능
    maxPickableCount = 5, // 선택 가능한 최대 대상 수
    minPickableCount = 1 // 선택 가능한 최소 대상 수
)

PickerClient.rx.selectFriendsPopup(
    context = context!!,
    params = openPickerFriendRequestParams
).subscribe({ selectedUsers ->
    Log.d(TAG, "친구 선택 성공 $selectedUsers")
}, { error ->
    Log.e(TAG, "친구 선택 실패", error)
}).addTo(disposables)

친구 목록 가져오기

기본 정보
레퍼런스 앱 설정
[SDK, RxSDK] friends()
[SDK] Friends
설치
초기화
권한 사전 설정 카카오 로그인 동의항목
필요:
사용 권한
플랫폼 등록
카카오 로그인 활성화
동의항목
필요 필요:
카카오 서비스 내 친구목록
(프로필사진, 닉네임, 즐겨찾기 포함)

현재 로그인한 사용자의 카카오톡 친구 목록을 불러옵니다.

요청

friends() API를 호출합니다. 요청 시 친구 목록의 정렬 순서, 한 페이지당 친구 수를 선택적으로 지정할 수 있습니다. 파라미터 없이 요청 시 기본 설정대로 요청이 전송됩니다.

응답

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

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

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

예제

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)