[컴][웹] 구글 캘린더 연동 방법

구글 달력 연동하기 / 구글 캘린더 연동하기 / OAuth / user 의 google calendar에 접근하는 방법 / how to use google calendar


구글 캘린더 사용법

구글 캘린더를 사용하는 방법은 크게 2가지가 있다. 하나는 자신이 만든 service 가 사용자(user) 의 캘린더의 정보를 보여주는 것이고, 다른 하나는 자신의 service 에 자신의 calendar 의 정보를 가져와서 보여주는 것이다.

  1. 자신의 service 가 사용자(user) 의 캘린더의 정보를 보여주는 것
  2. 자신의 service 에 자신의 calendar 의 정보를 가져와서 보여주는 것

여기서는 이 2가지 사용법에 대해 대략적으로 살펴보자.


user의 구글 캘린더 내용을 요청할때


여기서는 google calendar api 를 javascript 를 통해 연동할 것이다. 자세한 문서는 여기를 참고 하면 된다.

참고로, 이것은 캘린더 app 같이 user 의 calendar 에 접근해야 할 필요가 있는 경우에 사용하게 된다.  만약 개발자의 서비스에서 개발자의 calendar 에 접근해서 data를 가져오고자 하는 경우라면, 아래 "자신의 calendar 에 접근해서 data를 가져오는 경우" 를 확인하자.

순서

  1. google calendar api 켜기
    1. 여기 를 누르면 설정마법사가 실행된다.
    2. 아래 그림을 보면서, project 를 생성하고, client ID 를 생성하면 된다.
    3. 생성된 client id 는 추후에 사용하게 된다.
  2. sample 실행
    1. 여기에 나온대로 sample 을 실행하자.
    2. 그러면 'authorize' 버튼이 하나 보인다.
    3. 그것이 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 사용


Auth 설정



php 의 auth 설정에서

아래 2가지 방법이 가능하다.
  1. $client->setAuthConfig(base_path().'/service-account.json');
  2. 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;
  }
 }
    
?>




References

  1. Google Calendar API  |  Google Developers

댓글 없음:

댓글 쓰기