안녕하세요? 이번 글은 카카오 API 사용을 위한 토큰(Tokens) 갱신 방법을 정리해 보겠습니다. 이전 글은 다음 링크를 참고하시면 됩니다.
카카오 API는 액세스 토큰(Access Token)과, 액세스 토큰을 갱신하는 데 쓰는 리프레시 토큰(Refresh Token)이 있습니다.
이번 글은 리프레시 토큰을 사용하여 엑세스 토큰을 갱신하는 방법입니다.
# 카카오톡 메시지 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)
위와 같은 방식으로 'access_token'과 'refresh_token'을 확인할 수 있는데요, 갱신 방법은 아래와 같습니다.
*{REST API}와 {refresh_token}을 교체해 주시면 됩니다. tokens가 교체되면서 {access_token}이 갱신됩니다.
# 카카오톡 메시지 API
url = "https://kauth.kakao.com/oauth/token"
data = {
"grant_type": "refresh_token",
"client_id": "{REST API}",
"refresh_token": "{refresh_token}"
}
response = requests.post(url, data=data)
tokens = response.json()
# kakao_code.json 파일 저장
with open("kakao_code.json", "w") as fp:
json.dump(tokens, fp)
이제 아래 코드로 시험해 보시면, 정상 동작하는 것을 확인하실 수 있습니다.
url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
headers = {
"Authorization": "Bearer " + tokens['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()))
(해당 코드를 함수로 정의 후) 이제 'schedule' 라이브러리와 함께 사용하여 정기적으로 갱신해주시면 되겠습니다.