Как очистить все события в Календаре Google с помощью API V3 PHP

Я потратил много времени, чтобы понять, как сделать следующее с помощью Календаря Google, используя API V3 в PHP.

  1. вставить новое событие
  2. прочитать все существующие события
  3. удалить каждое существующее событие

Однако мне все же хотелось бы знать, как очистить весь Календарь Google, чтобы мой код работал быстрее, так как метод чтения и удаления немного медленный.

Я пытался выяснить, как использовать для этого предоставленную Google функцию "clear", и документация, предоставленная Google, просто показывает, что я должен иметь возможность использовать следующую команду для достижения этой цели:

$service->calendars->clear('primary');

Также в коде Google есть комментарий, относящийся к набору методов "календари" (где существует функция очистки):

Обычное использование:

  <code>
   $calendarService = new Google_Service_Calendar(...);
   $calendars = $calendarService->calendars;
  </code>

Итак, я соединил это с предыдущим кодом аутентификации. Я уверен, что аутентификация работает нормально, так как я использовал это в другом месте, но чистый код явно неверен, поскольку я получаю сообщение об ошибке:

Примечание. Неопределенная переменная: сервис в C:\wamp\www\googleapi\clear\index.php в строке 39.

Я пытался использовать как «основного», так и основного владельца, и я пытался сделать календарь частным и общедоступным, но безрезультатно.

Любой, у кого есть четкий метод работы, пожалуйста, укажите мне правильное направление.

Это код, который я использую до сих пор:

<?php
session_start();
require_once '../google-api-php-client-master/autoload.php';
//Google credentials
$client_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com';
$service_account_name = '[email protected]';
$key_file_location = '../google-api-php-client-master/API Project-xxxxxxx.p12';
if (!strlen($service_account_name) || !strlen($key_file_location))
    echo missingServiceAccountDetailsWarning();
$client = new Google_Client();
$client->setApplicationName("Whatever the name of your app is");
if (isset($_SESSION['service_token'])) {
    $client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
    $service_account_name,
    array('https://www.googleapis.com/auth/calendar'),
    $key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
    try {
      $client->getAuth()->refreshTokenWithAssertion($cred);
    } catch (Exception $e) {
      var_dump($e->getMessage());
    }
}
$_SESSION['service_token'] = $client->getAccessToken();
/* ------------------------- We are now properly authenticated ------------------- */
$calendarService = new Google_Service_Calendar($client);
$calendars = $calendarService->calendars;
$service->calendars->clear('primary');
?>

person Andy Hawes    schedule 31.01.2015    source источник


Ответы (1)


Просто используйте свой экземпляр сервисного календаря.

$service = new Google_Service_Calendar($client); $calendar = $service->calendars->clear('primary');

person thiagoaos    schedule 03.02.2015
comment
Спасибо за предложение, но это дает мне сообщение об ошибке: строка (98) Ошибка при вызове POST googleapis.com/calendar/v3/calendars/primary/clear: (403) Запрещено Буду признателен за любые другие предложения или варианты кода. - person Andy Hawes; 05.02.2015