티스토리 뷰
1. 팀 관리에 사용자 추가
우선 카카오톡에서 친구에게 메시지를 보내는 방법은 2가지가 있다. 카카오톡 메시지 API 를 이용하는 방법과 카카오링크 API를 이용하는 방법이 있다. (관련 링크:https://developers.kakao.com/docs/latest/ko/message/common)
간단하게 메시지 전송 테스트를 위해서 본인은 카카오톡 메시지 API 를 활용한 내용을 포스팅 하였고, 다양한 친구에게 메세지를 보내기 위해서는 카카오링크 API 를 이용할 수 있다.
카카오톡 메시지 API를 이용하여 목록을 받아오거나 메시지를 보내기 위해서는 먼저 친구정보를 등록해야 한다.
경로는 [내 애플리케이션 > 팀 관리](https://developers.kakao.com/console/app/487054/config/member)를 통해서 팀원초대가 가능하며, 조금 불편하지만 팀원을 초대하고 해당 팀원계정으로 kakao developers 가입까지 해야 목록 조회 및 메시지 전달이 가능하였다. 추가적으로 카카오 로그인 메뉴 > 동의항목에서 카카오 서비스 내 친구목록 권한을 허용해 주어야 아래 과정이 가능하다.
2. 로그인한 사용자의 카카오계정에 연결된 친구 정보 받아오기
(https://developers.kakao.com/docs/latest/ko/kakaotalk-social/rest-api)
(1/3)에서 다루었던 메시지 보내기와 달리 친구 목록 가져올때에는 HTTP GET 요청을 통해 진행된다.
GET 요청 시, 아래와 같이 5개의 파라미터를 선택할 수 있으며, 모두 선택사항이다.
앞선 장에서 설명했던것과 같이 ACCESS-TOKEN 을 발급받은 후, HTTP 헤더를 구성 후 목록을 받아오는 샘플코드는
다음과 같다.
#참고 : https://developers.kakao.com/docs/latest/ko/kakaotalk-social/rest-api#get-friends curl -v -X GET "https://kapi.kakao.com/v1/api/talk/friends?limit=3" \ -H "Authorization: Bearer {USER_ACCESS_TOKEN}" |
비교적 간단하다. 이 코드는 python 으로 구현한 코드를 공유하자면
import json import requests def getFriendsList(): header = {"Authorization": 'Bearer ' + KAKAO_TOKEN} url = "https://kapi.kakao.com/v1/api/talk/friends" #친구 정보 요청 result = json.loads(requests.get(url, headers=header).text) friends_list = result.get("elements") friends_id = [] print(requests.get(url, headers=header).text) print(friends_list) for friend in friends_list: friends_id.append(str(friend.get("uuid"))) return friends_id KAKAO_TOKEN = "uj9WrKnmLkiP-...xxxxxxx...9cpcAAAF1I6l2ew" |
여기서 유의해야 하는 점은 requests.get 의 결과 응답은 json 객체로 받고 있습니다.
실제 "print(requests.get(url, headers=header).text)" 코드를 통해 받은 메시지는 아래와 같이 값을 가져왔다.
(가독성을 위해 일부 들여쓰기함 - 저는 친구로 와이프 한명이 추가되어 있음)
{ "elements":[ {"profile_nickname":"사랑하는 아내♥", "profile_thumbnail_image":"", "id":149..xxx...378, "uuid":"Q3JAcU..xxxxxx.Up6T3sd", "favorite":true} ], "total_count":1, "after_url":null,"result_id":"zbnYtN-...xxxxx...pdPgCA","favorite_count":1 } |
메시지는 {}를 통해 있었고, element 안에 친구 한명씩 LIST로 구성되어 있었다. string 파싱을 통해서 원하는 값을 얻어낼 수도 있지만, Python 은 모든 작업을 간단하게 할 수 있기 때문에 json.loads 메소드를 통해서 쉽게 파싱이 가능하다.
1) result = json.loads(requests 메시지 요청)
2) result.get('elements') elements 내 데이터 추출
3) loop 를 통해 값 추출 => LIST 로 저장
친구 목록을 가져오는 것이 목적이 아니라 친구에게 메시지까지 전달하고자 하면 가급적 list로 저장하는 것을 추천한다.
다음 포스팅에서 공유하겠지만, sendToFriendsMessage 에서는 전달해야 하는 친구 목록을 string 리스트로 받고 있다.
3. #참고로 구현 중 자주 발생할 수 있는 FAQ는 에러는 카카오에서 제공하는 다음 링크에서 내용을 확인 할 수 있다.
(https://devtalk.kakao.com/t/faq-api-api/82152)
- 1. 파라미터를 잘못 넣은 경우
: error code = "Constraints on the parameter [receiver_uuids] are unsatisfied. The input receiver id(s) is invalid format.","code":-2
: error code = "The Parameter [receiver_uuids] cannot be null.","code":-2
=> (3/3 포스팅에서 언급하겠지만, 본인은 uuid가 아니라 id값으로 계속 친구에게 메시지를 보내려 해서.....적지 않은 삽질을 했었다.ㅠㅠ)
- 2. 사용자 동의 설정을 활성화하지 않았거나 사용자가 해당 동의 항목에 동의하지 않은 경우
: error code = "insufficient scopes.","code":-402"
: error code = 'this user does not have any scope.', 'code': -402
- 3. 팀멤버가 없어 API 호출을 할 수 없는 경우
: error code = "permission denied to call the review api. invite to team member, first.","code":-5
[다음글] [Python] 카카오톡 : 메시지 (3/3 - 친구에게 기본 메시지 보내기)
https://cocoabba.tistory.com/17?category=439259
##팀원 목록이 불러오지 않을 경우 확인 절차
1. 내 애플리케이션 > 팀관리 > 팀원 초대
2. 팀원 상태 : 초대 메일 발송됨
3. 팀원 계정 https://developers.kakao.com/ 로그인 후 상태 활성상태로 변경
4. 팀원 동의항목 : 카카오 서비스 내 친구목록(프로필 사진, 닉네임, 즐겨찾기 포함) -> 이용 중 동의 설정
5. 팀원 계정으로 로그인 후 인증 토큰 발급 -> 동의 절차 진행
'개발 > 파이썬(PYTHON)' 카테고리의 다른 글
[Python] BeautifulSoup find return None 처리 (0) | 2020.10.20 |
---|---|
[Python] 카카오톡 : 메시지 (3/3 - 친구에게 기본 메시지 보내기) (0) | 2020.10.15 |
[Python] 카카오톡 : 메시지 (1/3 - 나에게 메시지 보내기) (2) | 2020.10.10 |
Python Console 실행 오류 (0) | 2020.09.30 |
PyCharm Interpreter 설정 (0) | 2020.09.30 |
- Total
- Today
- Yesterday
- 매물
- PYTHON
- 부동산
- Export
- json
- 네이버 부동산
- 파이썬
- 평형정보
- cortarNo
- 아파트
- 경매
- 대항력있는 임차인
- pyplot
- 경제적 자유
- REST API
- DICTIONARY
- 네이버 주식
- 상가
- 개발자도구
- 단지정보
- 크롤링
- 크몽
- eum.go.kr
- beautifulsoup
- Excel
- 네이버쇼핑
- 네이버
- pandas
- tkinter
- matplotlib
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |