캘린더 api 사용 중 -402 뜹니다

앱 ID : 919111

권한 신청하기 전에 기본 캘린더 목록만 먼저 받아 보려고 했는데

curl -v -G GET “https://kapi.kakao.com/v2/api/calendar/calendars
-H “Authorization: Bearer 토큰”
-d “filter=USER”

이렇게 보내면 (토큰은 받았습니다)

{
“msg”:“insufficient scopes.”,
“code”:-402,
“api_type”:“CALENDAR_GET_CALENDARS”,
“required_scopes”:[“talk_calendar”],
“allowed_scopes”[“profile_nickname”,“profile_image”,“account_email”,“gender”,“age_range”,“story_read”,“story_publish”,“birthday”,“story_permalink”,“talk_message”]
}

이렇게 반환됩니다.

내 애플리케이션 > 동의 항목 > 접근권한 > 톡캘린더 및 일정 생성, 조회, 편집/삭제
이 항목은 이용 중 동의로 선택하였습니다.

근데 실제 로그인중 이용중 동의 창의 선택항목은

카카오스토리
카카오스토리 글 작성
카카오톡 메시지 전송

이 3가지 항목만 선택할 수 있게 나오는데요(캘린더 선택항목이 없습니다.)

이렇게 동의 할 방법이 없어서 -402에러가 뜨는건 아닌지요?

처음 테스트 단계 부터 권한 신청을 해야 하는건가요?

수고하세요.

안녕하세요.

talk_calendar (톡캘린더 및 일정 생성, 조회, 편집/삭제) 권한이 없는 사용자가 관련 API를 호출하여 발생한 오류 입니다.
이용중 동의 창은 추가 항목 동의 받기 기능으로만 노출됩니다.

즉, 일반적인 로그인 이후, 서비스 이용 중, 캘린더 기능이 필요할 때, 추가 항목 동의 받기 기능을 사용하여 동의 받으셔야 합니다.

권한 신청은 이러한 방식으로 테스트가 완료된 후, 신청하셔야 합니다.

말씀해 주신 대로 추가 항목 동의 받기를 하니 에러는 뜨지 않는데
반환 값은

{“calendars”:[{“id”:“primary”}]}

오늘 날짜로 테스트 일정을 넣었는데 일정 목록을 가져오지 못하네요.
권한 신청을 해야 되는 것인가요?

목록 가져오기 호출 이력이 없습니다.
아래 API를 참고 부탁드립니다.

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

도와 주셔서 목록 가져오기는 성공했는데

{“events”:
[
{“time”:{“start_at”:“2023-06-05T00:00:00Z”,“end_at”:“2023-06-06T00:00:00Z”,“all_day”:true,“lunar”:false}},
{“time”:{“start_at”:“2023-06-08T00:00:00Z”,“end_at”:“2023-06-09T00:00:00Z”,“all_day”:true,“lunar”:false}}
],
“has_next”:false}

이렇게 time 파라미터만 반환합니다. (가져온 두가지 일정은 제가 웹에서 테스트로 등록한 일정입니다.)

카카오 REST API 문서에 보면

“요청 성공 시 응답은 조회 기간 내 일정 목록을 포함합니다. 서비스에서 만든 일정이 아닌 경우 일정 정보는 time 파라미터만 응답에 포함됩니다.”

이런 말이 있던데 여기서 서비스에서 만든 일정 이란 것이 무엇인지 모르겠습니다.

  1. 웹이나 모바일에서 등록한 상세 일정정보는 불러올 수 없다는 뜻인지요?

  2. 이벤트 생성을 해보려고 하는데

{“msg”:“event can’t be null.”,“code”:-2}

이렇게 반환 됩니다.

$getCalEveUrl = “https://kapi.kakao.com/v2/api/calendar/create/event”;
$isPost = 1;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $getCalEveUrl);
curl_setopt($ch, CURLOPT_POST, $isPost);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$headers = array();
//$headers[] = “Content-type:application/json”;
$headers[] = “Content-type:application/x-www-form-urlencoded;charset=utf-8”;
$headers[] = "Authorization: ".$header;
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$strEvent = ‘event = {
“title”: “ttlttlttlttl”,
“time”: {
“start_at”: “2023-06-09T03:00:00Z”,
“end_at”: “2023-06-09T06:00:00Z”,
“time_zone”: “Asia/Seoul”,
“all_day”: false,
“lunar”: false
},
“rrlue”:“FREQ=DAILY;UNTIL=20221031T000000Z”,
“description”: “cal desc111”,
“reminders”: [15, 30],
“color”: “RED”
}’;

curl_setopt($ch, CURLOPT_POSTFIELDS, $strEvent) ;

$calResponse = curl_exec ($ch);

curl_close ($ch);

제가 뭔가 잘못 보내고 있는 것 같은데 무엇이 문제일까요?