Python에서 request를 이용한 redirect url 접근이 안되나요? (나에게 메세지 보내기)

안녕하세요. python에서 나에게 메세지 보내기 기능을 이용해보려고 합니다.

다른 부분은 상관없고, authorize_code를 가져오는 과정에서 원래는 직접 url에 입력하고 새로 얻어진 주소에서 코드를 가져오는 과정이 꼭 들어갔었습니다.

이를 자동화하려면 어떤 방법을 사용해야 하는지 궁금합니다. 무조건 인터넷으로 들어가서 확인을 하고 난 이후에 거쳐야하는 건가요??

제 App id는 906393 입니다. 코드는 예전에 접근했던 코드를 사용했습니다. ㅎㅎ… 능력자님들이 계신다면 확인해주시면 감사하겠습니다.

혹시 다른 방식으로 접근이 가능한지도 여쭙고 싶습니다.

import requests

url = ‘https://kauth.kakao.com/oauth/token
rest_api_key = ‘’
redirect_url = ‘https://example.com/oauth
authorize_code = ‘lICbro7NDT8NUk24HUTOn3KW3nxTRVS5zQ5w6s5_ELgbhNSXS8D1t5RGM5hkdov6RtPYoAorDKgAAAGICf2Gcg’

data = {
‘grant_type’:‘authorization_code’,
‘client_id’:rest_api_key,
‘redirect_uri’:redirect_url,
‘code’: authorize_code,
}

response = requests.post(url, data=data)
tokens = response.json()
print(tokens)

import json

with open(“kakao_code.json”,“w”) as fp:
json.dump(tokens, 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

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

data={
“template_object”: json.dumps({
“object_type”:“text”,
“text”:“What is today dinner!”,
“link”:{
“web_url”:“www.naver.com
}
})
}

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

안녕하세요.

인가코드 요청을 1회 하고, 이후에는 인가요청하지 않고 액세스 토큰 재발급받아 처리하는 방법이 있습니다.

REST API | Kakao Developers REST API

안녕하세요, 답변 주셔서 감사합니다!

그 이후로 계속 전달해주신 홈페이지를 살펴봤는데, 어떻게 이거를 python에서 적용해야하나 고민이 많아서요.

말씀해주신 내용을 제가 이해한 바로는 redirect uri에서 얻어진 code를 재발급하는 형태로 처리하면 되는 건가 싶은데, 그렇다면 그냥 제 코드 상에 data 부분에 추가적인 expires (?) 에 대한 parameter를 넣어주는 느낌으로 이해했는데 이게 맞을까요??

제가 OAuth를 이용하는 보안 부분은 잘 몰라서 어렵네요…

죄송합니다~!! 알려주시면 열심히 만들어보겠습니다~!

안녕하세요.

redirect_uri 로 전달된는 code(인가코드)로 접근토큰을 발급받습니다.
메시지 보내기와 같은 API 사용에는 접근토큰이 필요합니다.

접근토큰은 보안을 위해 유효시간이 있습니다.
때문에, 사용자의 유효한 접근토큰을 계속 얻기 위해서는 사용자가 계속 다시 로그인 하여 새로 발급 받거나 접근토큰 발급 시 같이 반환되는 리프래시 토큰을 이용하여 접근토큰을 새로 발급 받는 방법이 있습니다.

답변 감사합니다.

고민을 많이 하면서 다른 글들도 참고해서 refresh token을 이용하여 처리할 수 있었습니다.

맨 처음 access_token을 발급 받았을 때는 43199초 동안 유지되고, refresh token을 사용해서 발급 받았을 때, 25184000초동안 만료되지 않고 접근이 가능한 것으로 이해했는데 맞나요??

혹시 이미지의 형태로 보내려면 웹에 올려야 하는 것으로 확인을 했는데, 혹시 이에 대해 장려되는 방법이 있을까요??

25184000는 리프래시 토큰의 만료 시간으로 현재는 5184000 입니다.
(가이드는 수정하도록 하겠습니다.)

접근토큰은 사용한 앱 키에 따라 12시간, 6시간 2시간의 만료시간을 갖습니다.
이를 갱신할 수 있는 리프래시 토큰의 만료시간은 2달입니다.

리프래시 토큰 또한 갱신가능합니다.

아래 가이드를 참고 부탁드립니다.

이해하기 | Kakao Developers 이해하기


그리고, 이미지의 형태로 보낸다는게 어떤 내용일까요?

감사합니다. 확인했습니다.

현재는 나에게 메세지 보내기에서 text 형태만 취급이 가능한것으로 아는데, 이미지도 나에게 보내고 싶어서요. 방법이 있을까요?

아쉽지만, 백앤드에서 메시지 전송 시, 이미지를 직접 업로드 하며 전송하실수는 없습니다.
공유하고자 하는 이미지는 웹에 서비스 하시고(og tag 사용), 스크랩 매시지 보내기 기능을 사용하셔야 합니다.

1개의 좋아요

안녕하세요. 또 찾아와버렸습니다. ㅎㅎ 죄송하고 감사합니다.

마지막으로 refresh_token을 이용해 새롭게 발급 받은 access token의 유효기간 또한 6시간으로 확인을 했습니다. 이게 맞는지 궁금합니다.

그리고 최초 1회는 refresh token으로 access token을 재발급 받아서 사용할 수 있지만, 그 이후에 동일한 refresh token으로 access token을 발급받으려고 했더니 오류가 발생하더라고요.
msg : access token should not be null or empty
code : -401

이 말은 한번 사용한 refresh_token은 다시는 사용할 수 없는 건가요??

토큰은 발급 수단별로 각각 다른 만료시간을 갖습니다.

Android, iOS : 12시간
JavaScript: 2 시간
REST API : 6시간

그리고, 앱 906393 에서 401 오류가 확인되지 않는데요 구현하신 코드를 같이 부탁드립니다.