IT

★카카오 API를 이용하여 나에게 메시지 보내기

유병혁 2021. 5. 17. 06:41

안녕하세요? 이번 글은 카카오 API를 이용하여 나에게 메시지 보내는 과정을 정리해 보겠습니다.

 

일단 'Kakao Developers' 홈페이지에 접속합니다.

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

로그인 후, 상단 메뉴 '내 애플리케이션'으로 이동합니다.

'애플리케이션 추가하기'를 클릭하고,

아래 창에서 '앱 이름'과 '사업자명'을 입력해 줍니다.

테스트용으로 앱 이름은 'GeoTalk', 사업자명은 'GGRS'를 입력하고 '저장' 버튼을 클릭해 봅니다.

아래와 같이 'GeoTalk' 애플리케이션이 추가되었습니다.

'GeoTalk'을 클릭하면 아래와 같이 앱 키를 확인하실 수 있는데요, 'REST API 키'를 복사해 두겠습니다.

다음으로 좌측 메뉴 중 '카카오 로그인'을 클릭하고,

아래 화면에서 활성화 설정 상태 'OFF'를 클릭합니다.

'활성화'를 클릭합니다.

자, 이제 활성화 설정 상태가 'ON'으로 변경되었습니다. 아래 'Redirect URI 등록'을 클릭하고,

아래와 같이 URI를 하나 입력해 봅니다.

https://localhost:3000

아래와 같이 Redirect URI가 등록되었습니다.

다음으로는 좌측 메뉴 중 '동의항목'을 클릭한 후,

접근권한 관리에서, '카카오톡 메시지 전송' 항목의 '설정'을 클릭합니다. 

동의 항목 설정 중 '이용 중 동의'를 체크하고 동의 목적은 '알림'을 입력한 후 '저장'을 클릭해 봅니다.

좌측 메뉴 중 '플랫폼'을 선택한 후, 메시지 API 사용 시 등록이 필요한 사이트 도메인을 등록해 줍니다(예: Google 등록).

https://www.google.co.kr

 

(구글 크롬을 기준으로)'새 시크릿 창'을 연 후, 아래 주소를 복사해서 실행해 줍니다.

*{REST API 키} 부분은 위에서 복사한 키를 붙여넣기 합니다.

https://kauth.kakao.com/oauth/authorize?client_id={REST API 키}&redirect_uri=https://localhost:3000&response_type=code&scope=talk_message

Kakao 로그인 후 아래 메시지가 뜨면 'Accept All'을 체크한 후, 'Accept and Continue'를 클릭해 줍니다.

아래와 같이 주소가 뜨면, {코드}를 복사해 둡니다.

https://localhost:3000/?code={코드}

이제 Jupyter Notebook을 실행한 후 라이브러리를 호출하고,

# 라이브러리 호출
import requests
import json

아래 코드에서 {REST API}, {코드} 부분을 위에서 복사한 내용으로 교체해 줍니다.

# 카카오톡 메시지 API
url = "https://kauth.kakao.com/oauth/token"
data = {
    "grant_type" : "authorization_code",
    "client_id" : "{REST API}",
    "redirect_url" : "https://localhost:3000",
    "code" : "{코드}"
}
response = requests.post(url, data=data)
tokens = response.json()
print(tokens)

토큰은 JSON 파일로 저장해 줍니다.

# kakao_code.json 파일 저장
with open("kakao_code.json", "w") as fp:
    json.dump(tokens, fp)

 

텍스트(Text) 형태로 작성해 본 메시지는 다음과 같습니다.

url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
headers = {
    "Authorization": "Bearer " + "{access_token}"
}
data = {
    "template_object" : json.dumps({ "object_type" : "text",
                                     "text" : "Google 뉴스: drone",
                                     "link" : {
                                                 "web_url" : "https://www.google.co.kr/search?q=drone&source=lnms&tbm=nws",
                                                 "mobile_web_url" : "https://www.google.co.kr/search?q=drone&source=lnms&tbm=nws"
                                              }
    })
}
response = requests.post(url, headers=headers, data=data)
if response.json().get('result_code') == 0:
    print('메시지를 성공적으로 보냈습니다.')
else:
    print('메시지를 성공적으로 보내지 못했습니다. 오류메시지 : ' + str(response.json()))

리스트(List) 형태로 작성해 본 메시지는 다음과 같습니다.

url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
headers = {
    "Authorization": "Bearer " + "{access_token}"
}
template = {
    "object_type" : "list",
    "header_title" : "Google",
    "header_link" : {
        "web_url" : "www.google.com",
        "mobile_web_url" : "www.google.com"
    },
    "contents" : [
        {
            "title" : "1. 국립공원 뉴스",
            "description" : "검색어: national park",
            "image_url" : "https://cdn.kado.net/news/photo/201901/948844_399953_0825.jpg",
            "image_width" : 50, "image_height" : 50,
            "link" : {
                "web_url" : "https://www.google.co.kr/search?q=national+park&source=lnms&tbm=nws",
                "mobile_web_url" : "https://www.google.co.kr/search?q=national+park&source=lnms&tbm=nws"
            }
        },
        {
            "title" : "2. 딥러닝 뉴스",
            "description" : "검색어: deep learning",
            "image_url" : "https://cdn-images-1.medium.com/max/1200/1*iDQvKoz7gGHc6YXqvqWWZQ.png",
            "image_width" : 50, "image_height" : 50,
            "link" : {
                "web_url" : "https://www.google.co.kr/search?q=deep+learning&source=lnms&tbm=nws",
                "mobile_web_url" : "https://www.google.co.kr/search?q=deep+learning&source=lnms&tbm=nws"
            }
        }
    ],
    "buttons" : [
        {
            "title" : "Google로 이동",
            "link" : {
                "web_url" : "www.google.com",
                "mobile_web_url" : "www.google.com"
            }
        }
    ]
}
data = {
    "template_object" : json.dumps(template)
}
response = requests.post(url, data=data, headers=headers)
# print(response.status_code)
if response.json().get('result_code') == 0:
    print('메시지를 성공적으로 보냈습니다.')
else:
    print('메시지를 성공적으로 보내지 못했습니다. 오류메시지 : ' + str(response.json()))

★토큰 갱신, 메시지 템플릿, 친구에게 메시지 보내기 등 추가적인 학습이 필요할 것 같습니다.

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com