Поэтому, после того, как я выкапывал несколько часов, я затрудняюсь принять решение. Я пытаюсь создать событие в своем основном календаре, используя v3 Google Calendar API, но я не испытываю ожидаемого поведения.
В этом случае я использую аутентификацию между серверами. Для этого я создал учетные данные учетной записи службы, переместил мою пару ключей в тот же каталог, что и мой тестовый скрипт, и установил для Google Calendar API значение «Вкл» в консоли разработчика.
Ниже вы найдете этот код.
Ожидаемый результат (как упоминается в Google) заключается в том, что при успешном создании / добавлении события в календарь объект события или массив (по вашему желанию) будет возвращен. В любом случае я получаю объект Event или массив, но событие не отображается в календаре. Если я попытаюсь посетить «htmlLink», который поставляется с созданным набором данных событий, появляется сообщение об ошибке «Это событие не существует».
Я бы предположил, что, поскольку я возвращаю объект Event со всеми необходимыми деталями, это было успешным; но нет сигары. Я попытался сыграть с свойством «видимости» события (установив его в «public»), но все равно не повезло.
Я бы очень признателен, если кто-то может мне помочь.
[Код]
require_once __DIR__ . '/GoogleAPI/Google_Client.php'; require_once __DIR__ . '/GoogleAPI/contrib/Google_CalendarService.php'; $google = new Google_Client(); $google->setUseObjects(TRUE); $google->setClientId(%my_client_id%); $google->setAssertionCredentials( new Google_AssertionCredentials( %my_client_id_email%, array( 'https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly' ), file_get_contents(__DIR__ . '/google_key.p12') ) ); $service = new Google_CalendarService($google); $event = new Google_Event(); $event->setSummary('Test Appointment'); $event->setLocation('Testing'); $event->setVisibility('public'); $start = new Google_EventDateTime(); $start->setDateTime('2014-03-28T10:00:00.000-05:00'); $event->setStart($start); $end = new Google_EventDateTime(); $end->setDateTime('2014-03-28T10:30:00.000-05:00'); $event->setEnd($end); $createdEvent = $service->events->insert('primary', $event, array('maxAttendees' => 1, 'sendNotifications' => FALSE)); var_dump($createdEvent);
================================================== ===========================
[Результат]
object(Google_Event)#20 (56) { ["anyoneCanAddSelf"]=> NULL ["__attendeesType":protected]=> string(20) "Google_EventAttendee" ["__attendeesDataType":protected]=> string(5) "array" ["attendees"]=> NULL ["attendeesOmitted"]=> NULL ["colorId"]=> NULL ["created"]=> string(24) "2014-03-28T18:14:59.000Z" ["__creatorType":protected]=> string(19) "Google_EventCreator" ["__creatorDataType":protected]=> string(0) "" ["creator"]=> object(Google_EventCreator)#21 (4) { ["displayName"]=> NULL ["email"]=> string(75) "%my_client_id_email%" ["id"]=> NULL ["self"]=> bool(true) } ["description"]=> NULL ["__endType":protected]=> string(20) "Google_EventDateTime" ["__endDataType":protected]=> string(0) "" ["end"]=> object(Google_EventDateTime)#24 (3) { ["date"]=> NULL ["dateTime"]=> string(20) "2014-03-28T15:30:00Z" ["timeZone"]=> NULL } ["endTimeUnspecified"]=> NULL ["etag"]=> string(52) ""2DaeHpkENZGECFHdcr5l8tYxjD4/MTM5NjAzMDQ5OTI1MTAwMA"" ["__extendedPropertiesType":protected]=> string(30) "Google_EventExtendedProperties" ["__extendedPropertiesDataType":protected]=> string(0) "" ["extendedProperties"]=> NULL ["__gadgetType":protected]=> string(18) "Google_EventGadget" ["__gadgetDataType":protected]=> string(0) "" ["gadget"]=> NULL ["guestsCanInviteOthers"]=> NULL ["guestsCanModify"]=> NULL ["guestsCanSeeOtherGuests"]=> NULL ["hangoutLink"]=> NULL ["htmlLink"]=> string(178) "https://www.google.com/calendar/event?eid=ZXNrYjdzNHBvZzlidnVhYjdqbmY2bWI3aWMgNjI1NDE0OTkwNTU3LW10cmpwaDZzNzRyNTVrbmFpc2p0OHVhY3ZqY3IxYzRxQGRldmVsb3Blci5nc2VydmljZWFjY291bnQuY29t" ["iCalUID"]=> string(37) "eskb7s4pog9bvuab7jnf6mb7ic@google.com" ["id"]=> string(26) "eskb7s4pog9bvuab7jnf6mb7ic" ["kind"]=> string(14) "calendar#event" ["location"]=> string(7) "Testing" ["locked"]=> NULL ["__organizerType":protected]=> string(21) "Google_EventOrganizer" ["__organizerDataType":protected]=> string(0) "" ["organizer"]=> object(Google_EventOrganizer)#22 (4) { ["displayName"]=> NULL ["email"]=> string(75) "%my_client_id_email%" ["id"]=> NULL ["self"]=> bool(true) } ["__originalStartTimeType":protected]=> string(20) "Google_EventDateTime" ["__originalStartTimeDataType":protected]=> string(0) "" ["originalStartTime"]=> NULL ["privateCopy"]=> NULL ["recurrence"]=> NULL ["recurringEventId"]=> NULL ["__remindersType":protected]=> string(21) "Google_EventReminders" ["__remindersDataType":protected]=> string(0) "" ["reminders"]=> object(Google_EventReminders)#25 (4) { ["__overridesType":protected]=> string(20) "Google_EventReminder" ["__overridesDataType":protected]=> string(5) "array" ["overrides"]=> NULL ["useDefault"]=> bool(true) } ["sequence"]=> int(0) ["__sourceType":protected]=> string(18) "Google_EventSource" ["__sourceDataType":protected]=> string(0) "" ["source"]=> NULL ["__startType":protected]=> string(20) "Google_EventDateTime" ["__startDataType":protected]=> string(0) "" ["start"]=> object(Google_EventDateTime)#23 (3) { ["date"]=> NULL ["dateTime"]=> string(20) "2014-03-28T15:00:00Z" ["timeZone"]=> NULL } ["status"]=> string(9) "confirmed" ["summary"]=> string(16) "Test Appointment" ["transparency"]=> NULL ["updated"]=> string(24) "2014-03-28T18:14:59.251Z" ["visibility"]=> string(6) "public" }
Он создает событие в календаре, принадлежащем учетной записи службы, если вы хотите управлять им, вам нужно поделиться календарем с собой (!):
$scope = new Google_AclRuleScope(); $scope->setType('user'); $scope->setValue('YOUR-EMAIL-HERE'); $rule = new Google_AclRule(); $rule->setRole('owner'); $rule->setScope($scope); $result = $service->acl->insert('primary', $rule);
Ссылка: Кому принадлежат календари, созданные учетной записью службы через API календаря Google и как их можно использовать?
PS: есть новая версия клиентской библиотеки PHP.