Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Andy HawesОтветов: 1

Я потратил много времени, чтобы понять, как сделать следующее с помощью Календаря 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');
?>

google-calendar-apigoogle-api-php-client

Ответы

Ответ 1 · рейтинг 2 · thiagoaos

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы