[컴][php] 구글캘린더 api 에서 공유 id 추가

구글캘린더 api 에서 공유 id 추가


google api 로 공유할 id 추가


Try this API

ref. 1 에 가면 "Try this API" 부분이 있는데, 여기서 이 api 가 어떻게 동작하는지 판단하면 된다.

아래는 koosal@gmail.com 이라는 user 를 공유에 추가하는 것이다.

POST https://www.googleapis.com/calendar/v3/calendars/<calendarId>/acl

calendarId: pnhuqt7otssumok0dhlg@group.calendar.google.com
{
  "role": "reader",
  "scope": {
    "type": "user",
    "value": "koosal@gmail.com"
  }
}


Acl: insert

여기서는 Acl: insert 를 사용할 것이다. 이녀석은 calendar 에 공유할 id 를 추가하는 기능이다.

아래는 ref.1 에 있는 php code 이다.

// Uses the PHP client library.

$rule = new Google_Service_Calendar_AclRule();
$scope = new Google_Service_Calendar_AclRuleScope();

$scope->setType("user");
$scope->setValue("koosal@gmail.com");
$rule->setScope($scope);
$rule->setRole("reader");

$createdRule = $service->acl->insert('pnhuqt7otssumok0dhlg@group.calendar.google.com', $rule);
echo $createdRule->getId();


full code


<?php
require_once __DIR__ . '/../vendor/autoload.php';


putenv('GOOGLE_APPLICATION_CREDENTIALS='.__DIR__.'/service-account.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes(implode(' ', 
    [ Google_Service_Calendar::CALENDAR]
  ));

$service = new Google_Service_Calendar($client);  
$rule = new Google_Service_Calendar_AclRule();
$scope = new Google_Service_Calendar_AclRuleScope();

$scope->setType("user");
$scope->setValue("koosal@gmail.com");
$rule->setScope($scope);
$rule->setRole("reader");

$calendarId = 'pnhuqt7otssumok0dhlg@group.calendar.google.com';
$createdRule = $service->acl->insert($calendarId, $rule);
echo $createdRule->getId();
echo '';



laravel




laravel 에서 사용할 때 주의할 점은 2가지 정도이다. 하나는 autoload 를 classmap 으로 하는 것이고, 다른 하나는 Controller 에서 Google_Client 등 google client library 사용할 때 \Google_Client 로 사용하면 된다.

"autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [ "vendor/google/apiclient/src/Google"]
    },

public function addIdToCalendar(Request $request)
{
    ...
    $client = new \Google_Client();
    $client->useApplicationDefaultCredentials();
    $client->setScopes(implode(' ', 
        [ \Google_Service_Calendar::CALENDAR]
        ));
    
    $service = new \Google_Service_Calendar($client);  
    $rule = new \Google_Service_Calendar_AclRule();
    $scope = new \Google_Service_Calendar_AclRuleScope();
    ...
    
    return response()->json(['status' => 'success']);

}





References

  1. Acl: insert  |  Google Calendar API  |  Google Developers


댓글 없음:

댓글 쓰기