Google Calendar API v3 - Не создает событие (Аутентификация между серверами)
Итак, покопавшись в течение нескольких часов, я не могу найти решение. Я пытаюсь создать событие в своем основном календаре, используя v3 API календаря Google, но я не испытываю ожидаемого поведения.
В данном случае я использую межсерверную аутентификацию. Для этого я создал учетные данные учетной записи службы, переместил свою пару ключей в тот же каталог, что и мой тестовый сценарий, и установил API календаря Google в положение "Включено" в консоли разработчика.
Ниже вы увидите найдите код, о котором идет речь.
Ожидаемый результат (как упоминалось Google) заключается в том, что после успешного создания/добавления события в календарь будет возвращен объект или массив событий (по вашему желанию). В любом случае я получаю объект или массив события, но событие не отображается в календаре. Если я попытаюсь посетить "HTMLLINK", который поставляется с созданным набором данных событий, я получу сообщение об ошибке, в котором говорится: "Это событие не существует".
Я бы предположил, что, поскольку я получение объекта события обратно со всеми необходимыми деталями, чтобы оно прошло успешно; но без сигары. Я попытался поиграть со свойством "видимость" события (установив для него значение "публичный"), но все равно не повезло.
Я был бы очень признателен, если бы кто-нибудь помог мне здесь.
[ Код]
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) "[email protected]"
["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"
}
1 answers
Это создание события в календаре, принадлежащем учетной записи службы, если вы хотите управлять им, вы должны поделиться календарем с самим собой (!):
$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);
PS: появилась новая версия клиентской библиотеки PHP.