이 문서는 REST API를 사용한 카카오톡 소셜 API 구현 방법을 안내합니다.
이 문서에 포함된 기능은 [도구] > [REST API 테스트]를 통해 사용해 볼 수 있습니다.
메서드 | URL | 인증 방식 |
---|---|---|
GET |
https://kapi.kakao.com/v1/api/talk/profile |
액세스 토큰 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
필요: 동의항목 | 플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 프로필 정보(닉네임/프로필 사진) 닉네임 프로필 사진 |
현재 로그인한 사용자의 카카오계정에 연결된 카카오톡 프로필 정보를 받는 기능입니다. 카카오톡 프로필과 카카오계정 프로필의 차이에 대해서는 이해하기를 참고합니다.
액세스 토큰을 헤더에 담아 GET
으로 요청하고, 응답은 JSON
객체로 받습니다. 사용자 카카오계정에 연결된 카카오톡이 없다면 에러 응답을 받습니다.
이름 | 설명 | 필수 |
---|---|---|
Authorization | Authorization: Bearer ${ACCESS_TOKEN} 인증 방식, 액세스 토큰으로 인증 요청 |
O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
nickName | String |
카카오톡 닉네임 필요한 동의항목: 프로필 정보(닉네임/프로필 사진) 또는 닉네임 |
X |
profileImageURL | String |
카카오톡 프로필 이미지 URL 640px * 640px 크기, HTTPS 만 지원필요한 동의항목: 프로필 정보(닉네임/프로필 사진) 또는 프로필 사진 |
X |
thumbnailURL | String |
카카오톡 프로필 썸네일(Thumbnail) 이미지 URL 110px * 110px 크기, HTTPS 만 지원필요한 동의항목: 프로필 정보(닉네임/프로필 사진) 또는 프로필 사진 |
X |
* countryISO: Deprecated, 사용자가 카카오톡을 이용 중인 국가(String), 공지 참고
2021년 6월 25일부터 프로필 정보가 '닉네임'과 '프로필 사진'으로 분리되어 제공됩니다. 분리된 동의항목인 '닉네임'과 '프로필 사진' 동의항목을 각각 설정하여 서비스에 필요한 프로필 정보만 선택적으로 제공 받을 수 있습니다. 기존 '프로필(닉네임/프로필 사진)' 동의항목을 사용 중인 앱에서는 기존과 같이 해당 동의항목을 통해 닉네임과 프로필 사진 정보를 모두 받을 수 있습니다. 기존 동의항목을 사용하던 앱에서 분리된 동의항목을 사용하려면 데브톡을 통해 변경을 요청합니다. 이 경우, 응답 구성이 변경될 수 있으므로 주의합니다. 자세한 내용은 공지를 참고합니다.
curl -v -G GET "https://kapi.kakao.com/v1/api/talk/profile" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"nickName":"홍길동",
"profileImageURL":"https://xxx.kakao.co.kr/.../aaa.jpg",
"thumbnailURL":"https://xxx.kakao.co.kr/.../bbb.jpg"
}
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"nickName":"홍길동"
}
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"profileImageURL":"https://xxx.kakao.co.kr/.../aaa.jpg",
"thumbnailURL":"https://xxx.kakao.co.kr/.../bbb.jpg"
}
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{}
메서드 | URL | 인증 방식 |
---|---|---|
GET |
https://kapi.kakao.com/v1/api/talk/friends |
액세스 토큰 |
권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
---|---|---|---|
필요: 사용 권한 |
플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함) |
현재 로그인한 사용자의 카카오계정에 연결된 카카오톡의 친구 정보를 받아 옵니다. 액세스 토큰을 헤더에 담아 GET
으로 요청합니다. 정렬 순서, 한 페이지에 가져올 친구 수 등 파라미터를 선택적으로 사용할 수 있습니다.
응답은 JSON 객체로 받습니다. 카카오톡 친구 수가 요청 시 limit
보다 많다면 결과가 페이지로 나뉩니다. 이 경우, 직접 개별 파라미터를 지정하지 않고도 액세스 토큰과 응답에 포함된 after_url
로 GET
요청을 해 다음 페이지의 친구 목록을 받아올 수 있습니다. 사용자 카카오계정에 연결된 카카오톡이 없다면 에러 응답을 받습니다.
파라미터 중 친구 정보를 정렬하는 기준은 order
와 friend_order
으로 설정합니다. 만약 친구 목록 응답에 즐겨찾기 친구들을 먼저 나오게 하고 싶다면 order
는 'asc', friend_order
은 'favorite'으로 지정합니다. 즐겨찾기 여부와 관계없이 닉네임 오름차순으로 친구 목록을 받아보려면 order
는 'asc', friend_order
은 'nickname'으로 지정합니다.
만약 사용자가 카카오톡 친구 목록 제공에 동의하지 않아 요청이 실패한 경우, 다음 내용을 참고해 사용자 동의를 받은 후 다시 요청합니다.
친구 목록은 파라미터(order) 지정에 따라 오름차순(asc) 또는 내림차순(desc)으로 정렬되며, 기본 정렬 기준인 'asc'일 경우, 세부적인 정렬 순서는 다음과 같습니다. 'desc'일 경우는 아래의 정렬 순서와 반대로 정렬됩니다.
기본적으로 한글 기준으로 정렬되지만, Kakao SDK를 통해 언어를 설정한 경우 영어 기준으로 정렬됩니다. friend_order
를 favorite
으로 설정해 즐겨찾기 친구 우선 정렬로 요청했다면 즐겨찾기 친구, 그 외 친구들의 정보 순으로 정렬되며, 각각 동일한 세부 정렬 순서가 적용됩니다.
이름 | 설명 | 필수 |
---|---|---|
Authorization | Authorization: Bearer ${ACCESS_TOKEN} 인증 방식, 액세스 토큰으로 인증 요청 |
O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
offset | Integer |
친구 목록 시작 지점(기본값: 0 ) |
X |
limit | Integer |
한 페이지에 가져올 친구 최대 수(기본값: 10 , 최대: 100 ) |
X |
order | String |
친구 목록 정렬 순서 오름차순( asc ) 또는 내림차순(desc )(기본값 asc ) |
X |
friend_order | String |
친구 목록 정렬 시 기준 설정favorite : 즐겨찾기 친구 우선 정렬nickname : 닉네임 순서 정렬로 기준 설정(기본값 favorite ) |
X |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
elements | Friend[] |
각 친구 정보를 담은 JSON 배열 |
X |
total_count | Integer |
전체 친구 수 | O |
before_url | String |
친구 목록 이전 페이지 URL | X |
after_url | String |
친구 목록 다음 페이지 URL | X |
favorite_count | Integer |
즐겨찾기(favorite ) 친구 수 |
X |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long |
회원번호 | O |
uuid | String |
친구마다 고유한 값을 가지는 참고용 코드(Code) 카카오톡 메시지 전송 시 사용 |
O |
favorite | Boolean |
해당 친구 즐겨찾기 여부 | X |
profile_nickname | String |
프로필 닉네임 | X |
profile_thumbnail_image | String |
프로필 썸네일(Thumbnail) 이미지HTTPS 만 지원 |
X |
* allowed_msg: Deprecated, 메시지 차단 여부, 프로필 공개 설정 기능 추가에 따라 더 이상 사용되지 않음
curl -v -G GET "https://kapi.kakao.com/v1/api/talk/friends" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "limit=3"
curl -v -G GET "https://kapi.kakao.com/v1/api/talk/friends" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "offset=3" \
-d "limit=3" \
-d "order=asc"
HTTP/1.1 200 OK
{
"after_url": "https://kapi.kakao.com/v1/api/talk/friends?offset=3&limit=3&order=asc",
"elements": [
{
"id": 00000000001,
"uuid": "abcdefg0001",
"favorite": true,
"profile_nickname": "이수민",
"profile_thumbnail_image": "https://xxx.kakao.co.kr/.../aaa.jpg"
},
{
"id": 00000000002,
"uuid": "abcdefg0002",
"favorite": false,
"profile_nickname": "홍길동",
"profile_thumbnail_image": "https://xxx.kakao.co.kr/.../bbb.jpg"
},
{
"id": 00000000003,
"uuid": "abcdefg0003",
"favorite": false,
"profile_nickname": "김철수",
"profile_thumbnail_image": "https://xxx.kakao.co.kr/.../ccc.jpg"
}
],
"total_count": 11,
"favorite_count": 1
}