구글 캘린더 사용법
구글 캘린더를 사용하는 방법은 크게 2가지가 있다. 하나는 자신이 만든 service 가 사용자(user) 의 캘린더의 정보를 보여주는 것이고, 다른 하나는 자신의 service 에 자신의 calendar 의 정보를 가져와서 보여주는 것이다.- 자신의 service 가 사용자(user) 의 캘린더의 정보를 보여주는 것
- 자신의 service 에 자신의 calendar 의 정보를 가져와서 보여주는 것
여기서는 이 2가지 사용법에 대해 대략적으로 살펴보자.
user의 구글 캘린더 내용을 요청할때
여기서는 google calendar api 를 javascript 를 통해 연동할 것이다. 자세한 문서는 여기를 참고 하면 된다.
참고로, 이것은 캘린더 app 같이 user 의 calendar 에 접근해야 할 필요가 있는 경우에 사용하게 된다. 만약 개발자의 서비스에서 개발자의 calendar 에 접근해서 data를 가져오고자 하는 경우라면, 아래 "자신의 calendar 에 접근해서 data를 가져오는 경우" 를 확인하자.
순서
- google calendar api 켜기
- 여기 를 누르면 설정마법사가 실행된다.
- 아래 그림을 보면서, project 를 생성하고, client ID 를 생성하면 된다.
- 생성된 client id 는 추후에 사용하게 된다.
- sample 실행
- 여기에 나온대로 sample 을 실행하자.
- 그러면 'authorize' 버튼이 하나 보인다.
- 그것이 user에게 보여질 버튼이다. 유저가 그 버튼을 클릭하고, 유저의 google id 로 로그인을 하면, user 의 calendar 에 대한 접근을 요청하게 된다.
구글 api 켜기 screen shots
자신의 calendar 에 접근해서 data를 가져오는 경우
이 경우에 google 은 service-account 라는 계정을 따로 만들도록 하고 있다. 이것은 임시 계정이라고 보면 된다.calendar 를 service-account 에 공유
그래서 주의할 점은 이 계정도 하나의 계정이라서, 만약 내가 발급받은 service-account 가 "abcdl-856@bamboo-cocoa-177309.iam.gserviceaccount.com" 인 경우에 내가 만든 calendar 를 service-account 로 접근하게 하려면, 이 계정에 공유를 해줘야 한다.
API 사용
- Using OAuth 2.0 for Server to Server Applications | API Client Library for Python
- http://www.daimto.com/google-calendar-api-with-php-service-account/ : php 에서 service_account 를 사용하는 방법이 나와있다.
- https://github.com/google/google-api-php-client#authentication-with-service-accounts : php authentification with service account
- https://developers.google.com/google-apps/calendar/v3/reference/calendarList/list#auth : 이 문서에 가서 Examples 를 보면 각 api 의 사용법을 알 수 있다.
- python 에서 구글 캘린더 api 이용하기
Auth 설정
php 의 auth 설정에서
아래 2가지 방법이 가능하다.
- $client->setAuthConfig(base_path().'/service-account.json');
- putenv('GOOGLE_APPLICATION_CREDENTIALS='.base_path().'/service-account.json');
$client->useApplicationDefaultCredentials();
그런데 2번째 경우에 간혹 putenv 가 제대로 동작하지 않는 경우가 발생했다.
screenshots
<?php $dr = __DIR__; require_once __DIR__ . '/../vendor/autoload.php'; $client = new Google_Client(); $client->setAuthConfig(base_path().'/service-account.json'); // putenv('GOOGLE_APPLICATION_CREDENTIALS='.base_path().'/service-account.json'); // $client->useApplicationDefaultCredentials(); $client->setScopes(implode(' ', [ Google_Service_Calendar::CALENDAR_READONLY] )); $service = new Google_Service_Calendar($client); ?> <html><body> <?php $calendarList = $service->calendarList->listCalendarList(); while(true) { foreach ($calendarList->getItems() as $calendarListEntry) { echo $calendarListEntry->getSummary()."<br>\n"; // get events $events = $service->events->listEvents($calendarListEntry->id); foreach ($events->getItems() as $event) { echo "-----".$event->getSummary()."<br>"; } } $pageToken = $calendarList->getNextPageToken(); if ($pageToken) { $optParams = array('pageToken' => $pageToken); $calendarList = $service->calendarList->listCalendarList($optParams); } else { break; } } ?>
댓글 없음:
댓글 쓰기