톡 캘린더 API 사용 중 권한 이슈 발생

안녕하세요.

톡 캘린더 APi 사용 중 권한 문제가 발생하여 문의 드립니다.

캘린더 목록 조회하기는 가능하나 캘린더 아이디를 이용하여 일정 조회를 할 때 403 권한 에러가 발생하는데요.
두 항목 모두 로그인 활성화 / 동의 항목(톡 캘린더) 을 요구 하고, 관련 설정이 되어 있음에도 불구하고

캘린더 아이디를 이용해서 일정 조회를 할 때만 에러가 나는 것이 의아합니다.

원인을 알 수 있을까요?

요청 양식은 아래와 같습니다.
(로그인 활성화, 동의 항목 절차는 사전에 완료하였습니다.)

url = “https://kapi.kakao.com/v2/api/calendar/events

header = {
“Authorization”: f"Bearer {ACCESS_TOKEN}",
}

data = {
“calendar_id”: “primary”,
“from”: “2022-10-26T00:00:00Z”,
“to”: “2022-10-30T00:00:00Z”,
}

print(
requests.post(url=url, headers=header, data=data).text,
requests.post(url=url, headers=header, data=data).status_code,
)

안녕하세요.

해당 API는 GET으로 호출해야 합니다.

REST API | Kakao Developers REST API - 목록 가져오기

제가 실수했네요. 다시 확인해보겠습니다. 답변 감사드립니다

이어서 하나 더 질문 하겠습니다. 일정 생성하기 API 관련된 문의 인데요.

{“msg”:“failed to parse parameter. name=event, stringToParse=title, paramString=title, paramStringAlias=null”,“code”:-2}

아래와 같이 요청했을 때, 위와 같이 title을 파싱하지 못했다는 에러가 나서요. 문서에서는 string으로 되어 있었는데, 혹시 다른 형태로 넣어줘야 할까요? 언어는 파이썬 입니다.

url = "https://kapi.kakao.com/v2/api/calendar/create/event"

header = {"Authorization": f"Bearer {ACCESS_TOKEN}"}

data = {
           "event": {
        "title": "테스트이벤트",
        "time": {
            "start_at": "2022-12-31T19:00:00Z",
            "end_at": "2022-12-31T21:00:00Z",
            "time_zone": "Asia/Seoul",
            "all_day": False,
            "lunar": False,
        },
    },
}

아래처럼 사용해 보시겠어요?

headers = {
    "Authorization": f"Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/x-www-form-urlencoded"
}

data = '''event={
    "title: "테스트이벤트",
    "time" : { ...
'''

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

주말에도 답변 주셔서 감사드립니다

말씀주신대로 아래와 같이 테스트 해봤는데, 아직 에러가 발생하는 것 같습니다. ㅜ title을 인식하지 못하는 것 같네요

에러명

{“msg”:“failed to parse parameter. name=event, stringToParse=-, paramString=-, paramStringAlias=null”,“code”:-2}

API를 이용해 일정 생성 테스트

url = "https://kapi.kakao.com/v2/api/calendar/create/event"

header = {
    "Authorization": f"Bearer {ACCESS_TOKEN}",
    "Content-Type": "application/x-www-form-urlencoded",
}

data = """event={
        "title": 이벤트테스트",
        "time": {
            "start_at": "2023-01-01T19:00:00Z",
            "end_at": "2023-01-01T21:00:00Z",
            "time_zone": "Asia/Seoul",
            "all_day": False,
            "lunar": False,
        },
    },
"""

encoded_body = data.encode("utf-8")

print(requests.post(url=url, headers=header, data=encoded_body).text)
print(requests.post(url=url, headers=header, data=encoded_body).status_code)

event 파라미터를 값은 JSON 포멧에 맞추어 작성 하셔야 합니다.

잘못된 예

data = """event={
        "title": 이벤트테스트",   <- !!! 따옴표 없음
        "time": {
            "start_at": "2023-01-01T19:00:00Z",
            "end_at": "2023-01-01T21:00:00Z",
            "time_zone": "Asia/Seoul",
            "all_day": False, <- !!! False 가 아닌 false
            "lunar": False, <- !!! False 가 아닌 false, 다음 프로퍼티가 없으므로 쉼표 제거
        }, <- 다음 프로퍼티가 없으므로 쉼표 제거
    }, <- 다음 프로퍼티가 없으므로 쉼표 제거
"""

수정 예

data = """event={
    "title": "이벤트테스트", 
    "time": {
        "start_at": "2023-01-01T19:00:00Z",
        "end_at": "2023-01-01T21:00:00Z",
        "time_zone": "Asia/Seoul",
        "all_day": false,
        "lunar": false
    }
}
"""

파라미터 값이 길기에 실수하기 쉬울것 같은데요 아래처럼 구분지어서 사용하는것도 좋을것 같네요

event = '''{
"title": "이벤트테스트",
"time": {
"start_at": "2023-01-01T19:00:00Z",
"end_at": "2023-01-01T21:00:00Z",
"time_zone": "Asia/Seoul",
"all_day": false,
"lunar": false
} }
'''
data = "event=" +  parse.quote(event) <- url인코딩 하시는걸 추천

잘되네요 woody님…감사합니다. 다른 API 사용할 때도 말씀 주신 내용 잘 참고할 수 있도록 하겠습니다. 주말 간에도 답변 주셔서 감사드립니다. 새해 복 많이 받으세요.