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

카카오톡 소셜

Legacy Android

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

애플리케이션 설정 확인

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

카카오톡 프로필 가져오기

카카오톡 프로필 정보를 받으려면 KakaoTalkService가 제공하는 메소드인 requestProfile을 호출합니다. 호출 시 KakaoTalkResponseCallback을 구현하고 전달해야 합니다.

requestProfile
Name Type Description
KakaoTalkResponseCallback KakaoTalkProfile 카카오톡 프로필 정보를 받아 처리하는 콜백(Callback)
KakaoTalkService.getInstance()
        .requestProfile(new TalkResponseCallback<KakaoTalkProfile>() {
            @Override
            public void onNotKakaoTalkUser() {
                Log.e("KAKAO_API", "카카오톡 사용자가 아님");
            }

            @Override
            public void onSessionClosed(ErrorResult errorResult) {
                Log.e("KAKAO_API", "세션이 닫혀 있음: " + errorResult);
            }

            @Override
            public void onFailure(ErrorResult errorResult) {
                Log.e("KAKAO_API", "카카오톡 프로필 조회 실패: " + errorResult);
            }

            @Override
            public void onSuccess(KakaoTalkProfile result) {
                Log.i("KAKAO_API", "카카오톡 닉네임: " + result.getNickName());
                Log.i("KAKAO_API", "카카오톡 프로필이미지: " + result.getProfileImageUrl());
            }
        });

요청이 성공하면 KakaoTalkProfile 객체로 카카오톡 프로필 정보를 받습니다. 예제 코드를 참고해 객체로부터 카카오톡 프로필의 각 정보를 문자열 값으로 구하는 방법을 확인합니다.

KakaoTalkProfile
Name Type Description
nickName String 카카오톡 닉네임
profileImageUrl String 카카오톡 프로필 이미지 URL
640px * 640px 크기
HTTPS만 지원
thumbnailUrl String 카카오톡 프로필 썸네일(Thumbnail) 이미지 URL
110px * 110px 크기
HTTPS만 지원

* countryISO: Deprecated, 사용자가 카카오톡을 이용 중인 국가(String), 공지 참고

카카오톡 친구 목록 가져오기

카카오톡 친구 수가 많을 수 있기 때문에, requestAppFriends는 API 사용에 따른 앱 부하를 방지하기 위해 페이지 기반(paging)으로 요청하도록 돼 있습니다. 따라서 friendContext로 친구 정보 조회 기준을 설정해 요청 시 전달해야 합니다. 이와 함께 요청 결과를 어떻게 처리할 것인지 정의한 TalkResponseCallback을 구현하고 전달합니다.

requestAppFriends
Name Type Description
friendContext AppFriendContext 친구 정보 조회 설정
TalkResponseCallback AppFriendsResponse 요청 결과를 받아 처리하는 콜백
AppFriendContext
Name Type Description
offset Int 친구 리스트 시작 지점 offset
limit Int 한 페이지에 가져올 친구 최대 수(최댓값: 100)
order String 친구 리스트 정렬 순서, 오름차순("asc") 또는 내림차순("desc")
appFriendOrder AppFriendOrder 정렬 기준 값
닉네임("NICKNAME") 또는 즐겨찾기한 친구("FAVORITE") 값을 가진 Enum
beforeUrl String 이전 페이지 URL, Kakao SDK가 자동으로 처리
afterUrl String 다음 페이지 URL, Kakao SDK가 자동으로 처리
Sample
// 컨텍스트 생성
//   - 닉네임, 처음(index 0)부터, 100명까지, 오름차순 예시
AppFriendContext context =
        new AppFriendContext(AppFriendOrder.NICKNAME, 0, 100, "asc");

// 조회 요청
KakaoTalkService.getInstance()
        .requestAppFriends(context, new TalkResponseCallback<AppFriendsResponse>() {
            @Override
            public void onNotKakaoTalkUser() {
                Log.e("KAKAO_API", "카카오톡 사용자가 아님");
            }

            @Override
            public void onSessionClosed(ErrorResult errorResult) {
                Log.e("KAKAO_API", "세션이 닫혀 있음: " + errorResult);
            }

            @Override
            public void onFailure(ErrorResult errorResult) {
                Log.e("KAKAO_API", "친구 조회 실패: " + errorResult);
            }

            @Override
            public void onSuccess(AppFriendsResponse result) {
                Log.i("KAKAO_API", "친구 조회 성공");

                for (AppFriendInfo friend : result.getFriends()) {
                    Log.d("KAKAO_API", friend.toString());

                    String uuid = friend.getUUID();     // 메시지 전송 시 사용
                }
            }
        });

카카오톡 친구 정보 요청 결과는 목록과 참고 정보들로 구성됩니다. 친구 목록에는 조회 기준 설정 시 입력했던 숫자만큼의 카카오톡 친구 정보가 AppFriendInfo 객체 형태로 들어있습니다.

AppFriendsResponse
Name Type Description
friends List<AppFriendInfo> 페이징된 AppFriendInfo 리스트
totalCount Int 정보를 받을 수 있는 전체 친구 수
favoriteCount Int 목록 내 전체 즐겨찾기 친구의 수
beforeUrl String 이전 페이지 URL
afterUrl String 다음 페이지 URL
AppFriendInfo
Name Type Description
userId Long 회원번호
uuid String 각 앱에서 친구마다 고유한 참고용 코드(Code)
카카오톡 메시지 전송 시 사용
profileNickname String 프로필 닉네임
HTTPS만 지원
profileThumbnailImage String 프로필 썸네일 이미지 URL
HTTPS만 지원
favorite OptionalBoolean 즐겨찾기 여부

카카오 SDK는 AppFriendContext 설정을 바탕으로 실제 요청 URL을 만들어 쓰는 방식으로 동작합니다. 그리고 AppFriendsResponse를 바탕으로 AppFriendContextbeforeUrl, afterUrl도 채워줍니다. 이 점을 활용해 offset, limit을 직접 설정하지 않아도 AppFriendContext를 재사용하여 친구 정보의 이전 페이지와 다음 페이지를 불러올 수 있습니다.

다음 예제처럼 요청 성공 시 다음 페이지 호출을 하는 것보다, 사용자가 RecyclerViewListView 등을 통해 현재 페이지의 친구 목록을 끝까지 스크롤했을 때 다음 페이지를 호출하는 지연(Lazy) 방식으로 불필요한 API 호출을 막고 부하를 줄이는 방식을 권장합니다.

    // 다음 페이지 확인 및 재호출
    if (context.hasNext()) {
        requestNextFriends(context);
    }
}

...

public void requestNextFriends(AppFriendContext context) {
    
    // 컨텍스트를 재사용하여 친구 목록 조회
    KakaoTalkService.getInstance()
            .requestAppFriends(context, new TalkResponseCallback<AppFriendsResponse>() {

                // 중략

            });

더보기