Я заставил его работать, используя служебную учетную запись и некоторые шаги, основанные на этом ответе , вот что я сделал:
1 - Создайте проект на Google Developer Console.
2- Перейдите в учетные данные и создайте ключ учетной записи службы с типом ключа JSON, файл JSON будет загружен, переместите его в папку проекта.
3- Включите календарьAPI на вкладке «Библиотека», найдите «Календарь API» и включите его.
4- Перейдите в Календарь Google
5 - Перейдите в Настройки -> Добавить календарь -> Создатькалендаря, после этого появится всплывающее уведомление / тост, нажмите «Настроить», прокрутите вниз до «Поделиться с определенными людьми» -> «Добавить людей», в поле электронной почты добавьте идентификатор учетной записи службы, вы можете получить его из «Учетные данные» -> «Управление учетными записями службы», затем установитеРазрешение на внесение изменений в события и нажмите «Отправить».
6 - Загрузите клиентскую библиотеку PHP .
7 - Теперь вам нужно получить идентификатор календаря из настроек календаря.прокрутите вниз до последнего разделавы найдете его, или вот пример кода для его получения, поищите его в ответе, это будет что-то вроде этого 'j85tnbuj1e5tgnizqt9faf2i88@group.calendar.google.com':
<?php
require_once 'google-api/vendor/autoload.php';
$client = new Google_Client();
//The json file you got after creating the service account
putenv('GOOGLE_APPLICATION_CREDENTIALS=google-api/test-calendar-serivce-1ta558q3xvg0.json');
$client->useApplicationDefaultCredentials();
$client->setApplicationName("test_calendar");
$client->setScopes(Google_Service_Calendar::CALENDAR);
$client->setAccessType('offline');
$service = new Google_Service_Calendar($client);
$calendarList = $service->calendarList->listCalendarList();
print_r($calendarList);
?>
8- Теперь вы можете добавлять события в календарь, пример кода:
$event = new Google_Service_Calendar_Event(array(
'summary' => 'Test Event',
'description' => 'Test Event',
'start' => array(
'dateTime' => '2018-06-02T09:00:00-07:00'
),
'end' => array(
'dateTime' => '2018-06-10T09:00:00-07:00'
)
));
$calendarId = 'j85tnbuj1e5tgnizqt9faf2i88@group.calendar.google.com';
$event = $service->events->insert($calendarId, $event);
printf('Event created: %s\n', $event->htmlLink);
Здесь происходит то, что событие создается сервисной учетной записью, которая отличается от вашей собственной учетной записи Google и имеет свои собственные данные, поэтомуЕсли вы не открыли доступ к календарю для учетной записи службы и установили идентификатор календаря в качестве основного, это создаст событие в календаре учетной записи службы, к которому у вас нет нормального доступа.
Надеюсь, это кому-нибудь поможет.
Ссылки:
https://stackoverflow.com/a/26067547/8702128
https://github.com/google/google-api-php-client
https://developers.google.com/calendar/quickstart/php
Как вставить событие в пользовательский календарь Google с помощью php?