어제 받은 토큰으로 메세지 발송 시도~~~ 하였으나
코드는 돌았는데...메세지 무반응....
알아보니
"로그인 시 카카오계정 세션의 인증 시간은 기본 24시간이며, 최초 인증 후 세션 시간은 변경되지 않습니다. 사용자가 로그인 유지를 선택한 경우에는 인증 시간이 1달입니다. "
뚜둥..쓰
우선 토큰 부터 다시 파해치자.
# https://kauth.kakao.com/oauth/authorize?client_id={api값}&redirect_uri={설정하신 리다이렉션 url}&response_type=code
위 url로 접속하면 code 값을 반환해줍니다.
====================코드===============================
import requests
import json
url = "https://kauth.kakao.com/oauth/token"
data = {
"grant_type" : "authorization_code",
"client_id" : "{apt값}",
"redirect_uri" : '설정하신 리다이렉션 url',
"code" : "반환 된 code 값"
}
response = requests.post(url, data=data)
tokens = response.json()
if "access_token" in tokens:
with open("kakao_token.json", "w") as fp:
json.dump(tokens, fp)
print("Tokens saved successfully")
else:
print(tokens)
====================코드===============================
실행해주세요.
토큰을 저장 하였습니다 석세스~~
생성 된 토큰에 유효기간이 있음
딕셔너리 형태 반환 값 중 , "expires_in": 12333, 숫자 초단위 잔여 유효시간을 전달 합니다!-
아래 코드로 토큰을 리프레시하실 수 있습니다.
====================코드===============================
import requests
import json
rest_api_key = 'aa462514c84043fba37df1f82aaf6f4b'
redirect_uri = 'https://localhost:3000'
url_token = 'https://kauth.kakao.com/oauth/token'
authorize_code = 'CK5cVxsxO6I4zBsMaMgo1AWl7wf9vMGhzsACPuD7phtO_aQx8jjk_91O5O-PbD7RnFFdvgo9c00AAAGI4mjg8A'
try:
with open("kakao_token.json","r") as fp: # 기존에 저장된 token 파일이 있는지 찾아봅니다.
tokens = json.load(fp)
if "error_code" in tokens:
tokens={}
except Exception as e:
print(e)
tokens={}
if tokens == {}:
# 신규 발급이 필요한 경우
param = {
'grant_type':'authorization_code',
'client_id':rest_api_key,
'redirect_uri':redirect_uri,
'code': authorize_code, # 한번 발급되면 authorize_code는 무효화됩니다.
}
response = requests.post('https://kauth.kakao.com/oauth/token', data=param)
tokens = response.json() # token 발급 api로 발급된 정보들을 kakao_token.json 파일에 저장합니다.
if "error_code" in tokens:
print(tokens["error_code"])
else:
with open("kakao_token.json","w") as fp:
json.dump(tokens, fp)
print("파일로 토큰 정보 저장!")
else:
# 기존 발급된 정보가 있을 경우
headers = {
"Authorization": "Bearer " + tokens["access_token"]
}
# access_token_info의 결과가 계속 -401로 돌아옵니다. 추후 수정할 예정입니다.
response = requests.get('https://kapi.kakao.com/v1/user/access_token_info', headers=headers)
result = response.json()
if "error_code" in result:
# -401은 유효하지 않은 값 혹은 유효기간이 지난 토큰일 경우 발생하는 에러입니다.
# api로 token 갱신을 요청합니다.
param = {
"grant_type":"refresh_token",
"client_id" : rest_api_key,
"refresh_token" : tokens["refresh_token"]
}
response = requests.post('https://kauth.kakao.com/oauth/token', data=param)
new_token = response.json()
# 새로 발급된 token을 다시 저장합니다.
if "error_code" in new_token:
print("ERROR :", new_token["error_code"])
else:
with open("kakao_token.json", "w") as fp:
json.dump(new_token, fp)
print("파일로 새로운 토큰 정보 저장!")
else:
print("정상 토큰")
====================코드===============================
'Python > API' 카테고리의 다른 글
telegram api 메세지 보내기 오류 잡기 AttributeError: module 'attr' has no attribute 's' (0) | 2023.06.30 |
---|---|
Tstory api 연동 python 글쓰기 ! 카테고리 정보 받아오기. 코드 복 붙 ! (0) | 2023.06.26 |
python tstory api 연동해서 블로그 오토 글쓰기~ [코드 첨부] (0) | 2023.06.26 |
python tstory api 연동하기 ! 2분 (0) | 2023.06.26 |
KAKAO API 연동 / 나에게 카톡보내기 (A. 사용자 토큰 발급) 그림 설명 5분 컷 (0) | 2023.06.22 |