티스토리 뷰

반응형

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 

 

[Python] 카카오톡 : 메시지 (3/3 - 친구에게 기본 메시지 보내기)

1. kakao developers 사이트 참조 (https://developers.kakao.com/docs/latest/ko/message/rest-api#send-friend) 친구에게 기본 메시지를 보내기 위해서는 나에게 메시지 보내기와 달리 메시지를 받을 친구의 카..

cocoabba.tistory.com

 

##팀원 목록이 불러오지 않을 경우 확인 절차

1. 내 애플리케이션 > 팀관리 > 팀원 초대
2. 팀원 상태 : 초대 메일 발송됨
3. 팀원 계정 https://developers.kakao.com/ 로그인 후 상태 활성상태로 변경
4. 팀원 동의항목 : 카카오 서비스 내 친구목록(프로필 사진, 닉네임, 즐겨찾기 포함) -> 이용 중 동의 설정
5. 팀원 계정으로 로그인 후 인증 토큰 발급 -> 동의 절차 진행

https://developers.kakao.com/tool/rest-api/open/get/v2-user-me > 토큰 발급
팀원 계정으로 인증 토근 발급 시, 추가 조회 범위 확인
추가 동의사항 반영하기

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함