문의 시, 사용하시는 개발환경과 디벨로퍼스 앱ID를 알려주세요.
python
ID 1008878
안녕하세요. 친구목록 API에 관련하여 문의드릴 것이 있습니다.
이전 질문을 통해 24시간 내 API를 호출하지않으면 친구목록 소멸이 될 수 있다는 답변을 보고 주말 간 갱신을 위하여 일 2회 API를 호출하는 코드를 제작하여 가동하였는데 48시간 정도 지난 시점에서 친구목록이 초기화 된 것을 볼 수 있습니다. 원인이 무엇이고 해결법이 궁금합니다.
진행 절차는 아래와 같습니다.
- 카카오 로그인을 통해 친구 토큰 발급
- 코드를 통한 친구 API 호출 및 본인에게 친구목록 메세지 전송
import requests
import json
import schedule
import time
import requests
def refresh_token(app_key,tokens):
url = "https://kauth.kakao.com/oauth/token"
data = {
"grant_type": "refresh_token",
"client_id": app_key,
"refresh_token": tokens['refresh_token'],
'client_secret':'qhnwhcMYRZ7mlR6gFz9GMmcOWTMeRd7Z'
}
response = requests.post(url, data=data)
print(response.status_code)
# 갱신 된 토큰 내용 확인
result = response.json()
# 갱신 된 내용으로 파일 업데이트
if 'access_token' in result:
tokens['access_token'] = result['access_token']
if 'refresh_token' in result:
tokens['refresh_token'] = result['refresh_token']
else:
pass
with open("kakao_code.json", "w") as fp:
json.dump(tokens, fp)
def set_kakao():
with open("kakao_code.json", "r") as fp:
tokens = json.load(fp)
refresh_token(app_key,tokens)
friend_url = "https://kapi.kakao.com/v1/api/talk/friends"
# # GET /v1/api/talk/friends HTTP/1.1
# # Host: kapi.kakao.com
# # Authorization: Bearer {ACCESS_TOKEN}
headers={"Authorization" : "Bearer " + tokens["access_token"]}
result = json.loads(requests.get(friend_url, headers=headers).text)
friends_list = result.get("elements")
print(friends_list)
uuids = [friend.get("uuid") for friend in friends_list]
url="https://kapi.kakao.com/v2/api/talk/memo/send"
# # 본인에게 전송
data={
# 'receiver_uuids': json.dumps(uuids), # UUID 배열을 JSON 문자열로 변환
"template_id":104657,
"template_args": json.dumps({"FW": str(friends_list)})
}
response = requests.post(url, headers=headers, data=data)
print(response.status_code)
schedule.every().day.at("05:00").do(set_kakao)
schedule.every().day.at("17:40").do(set_kakao)
while True:
schedule.run_pending()
time.sleep(1) # CPU 부하를 줄이기 위해 짧은 대기 시간을 추가합니다.
아래는 실행화면입니다.