728x90

사용자 토큰을 발급받지 않으신 분은 반드시 1편을 수행해주세요!

www.novice-engineers.tistory.com/9?category=908185

 

[Python] 10분 만에 카카오 오픈 API로 메시지 보내기 - (1. 사용자 토큰 발급)

1. Kakao Developers 사이트 이동 www.developers.kakao.com/ Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합..

novice-engineers.tistory.com

1. 메시지 이동

012

위 슬라이드 쇼를 참고해주세요.

1. 문서 클릭

2. 스크롤을 조금 내린 후 [메시지 박스 안에 있는 REST API 클릭]

3. [Ctrl + F]를 누른 후 Request를 입력

4. URL이란 박스 안에 아래와 같은 코드를 확인하실 수 있습니다.

POST/v2/api/talk/memo/default/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer {ACCESS_TOKEN}

=> https://kapi.kakao.com/v2/api/talk/memo/default/send 이러한 주소가 됩니다.

 

2. Visual Studio Code에 코드 입력 & 실행

import requests
import json

#1.
with open(r"C:\Users\user\Desktop\PythonWorkspace\kakao_test\kakao_code.json","r") as fp:
    tokens = json.load(fp)

#2.
with open("kakao_code.json","r") as fp:
    tokens = json.load(fp)

url="https://kapi.kakao.com/v2/api/talk/memo/default/send"

# kapi.kakao.com/v2/api/talk/memo/default/send 

headers={
    "Authorization" : "Bearer " + tokens["access_token"]
}

data={
    "template_object": json.dumps({
        "object_type":"text",
        "text":"Hello, world!",
        "link":{
            "web_url":"www.naver.com"
        }
    })
}

response = requests.post(url, headers=headers, data=data)
response.status_code

이전 1강에서 사용한 with open에 따라 #1. 또는 #2. 중 하나만 선택하여 사용하시면 됩니다.

(오류 나시는 분들은 하단에 에러들 참고해서 코드를 수정해보세요!)

 

실행 후 자신의 카카오톡을 확인해주세요!

이렇게 메시지가 온 것을 확인하실 수 있습니다.

 

 

 

 

 

 

※ 간략한 코드 설명

headers={
"Authorization" : "Bearer " + tokens["access_token"]
}
# "Bearer"이라는 문자열과 json에서 불러온 access_token의 value를 조합하여 인증키를 만든다.

 

data={
"template_object": json.dumps({
"object_type":"text",
"text":"Hello, world!",
"link":{
"web_url":"www.naver.com"
}
})
}

# object_type은 text 고정값
# text에는 내용
# link는 필수사항이라서 그냥 네이버를 넣어줬습니다.

아래 링크를 참조하시면 이해하시는데 도움될 것 같습니다!

www.developers.kakao.com/docs/latest/ko/message/message-template#text

 

Kakao Developers

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

developers.kakao.com

 

response = requests.post(url, headers=headers, data=data)
response.status_code

# 위 2줄의 코드가 메시지를 보내는 과정입니다.

 

※ 추가 (scop error)

print(response.status_code)
if response.json().get('result_code') == 0:
	print('메시지를 성공적으로 보냈습니다.')
else:
	print('메시지를 성공적으로 보내지 못했습니다. 오류메시지 : ' + str(response.json()))

 

위에서 scop error 나시는 분은 어플리케이션 생성 하실때 동의 항목에서 설정하시고 토큰 받으시면 됩니다.

공유해 주신 김대성님 정말 감사합니다! :)

 

※ 추가 (403 error)

메시지를 성공적으로 보내지 못했습니다. 오류메시지 : {'msg': 'insufficient scopes.', 'code': -402, 'api_type': 'TALK_MEMO_DEFAULT_SEND', 'required_scopes': ['talk_message'], 'allowed_scopes': ['profile_nickname']}

'3. 동의항목'을 참고로해도 동일 메시지를 받아서 하단 코드를

https://kauth.kakao.com/oauth/authorize?client_id={client_id}&redirect_uri=https://example.com/oauth&response_type=code

아래와 같이 수정하니 추가 동의하고 성공했습니다.

https://kauth.kakao.com/oauth/authorize?client_id={client_id}&redirect_uri=https://example.com/oauth&response_type=code&scope=profile_nickname,friends,talk_message

※ 추가 (401 error)

headers={
'Authorization': 'Bearer' + tokens['access_token']
}
상단의 코드를 아래와 같이 수정
headers={
'Authorization': 'Bearer' + ' ' + tokens['access_token']
}

오류 및 해결 방법을 공유해 주신 분들 정말로 감사드립니다!

728x90

+ Recent posts