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