как получить информацию о событии из календаря Google

мне удалось получить push-уведомление из календаря Google в мою систему, когда в календаре создается новое событие.
push-уведомление не содержит данных в теле POST, а заголовки POST:

[Host] => xxxxxx.xxxx.com
[Content-Type] => application/json; charset=UTF-8
[Accept] => */*
[X-Goog-Channel-ID] => xxxxxxx-xxxxxxxx-8824-f0c2166878be
[X-Goog-Channel-Expiration] => Thu, 04 Dec 2014 04:27:13 GMT
[X-Goog-Resource-State] => exists
[X-Goog-Message-Number] => 11897215
[X-Goog-Resource-ID] => xxxxxxxxxx-xxxx-pSbC27qOUfg
[X-Goog-Resource-URI] => https://www.googleapis.com/calendar/v3/calendars/xxxxxxx@gmail.com/events?key=AIzaSyC_0nytiZWHfabrpWiExxxxxxxxxxx&alt=json
[Content-Length] => 0
[Connection] => Keep-alive
[Accept-Encoding] => gzip,deflate
[User-Agent] => APIs-Google; (+https://developers.google.com/webmasters/APIs-Google.html)

где новые детали события, которые были созданы в календаре?
как мне их получить?

нет информации в Интернете и нет информации в документации Google (искал часами):
https://developers.google.com/google-apps/calendar/v3/push

где детали события?

ОБНОВИТЬ:

я установил часы в своем календаре, используя этот код:

service = new Google_Service_Calendar($client);
$channel =  new Google_Service_Calendar_Channel($client);
$uuid = gen_uuid();
$channel->setId($uuid);
$channel->setType('web_hook');
$channel->setExpiration('1919995862000');

global $sugar_config;
$address = $sugar_config['site_url'] . "/index.php?entryPoint=updateFromCal";
$channel->setAddress($address);
$watchEvent = $service->events->watch($bean->google_cal_id_c, $channel);

Это детали канала, которые я отправляю в api google calendar:

[address] => https://mydomainXXXX/index.php?entryPoint=updateFromCal
[expiration] => 1919995862000
[id] => xxxxxxxxxxxxxxx--4558-ac19-b82e0ca32206
[kind] =>
[params] =>
[payload] =>
[resourceId] =>
[resourceUri] =>
[token] =>
[type] => web_hook
[modelData:protected] => Array
(
)

[processed:protected] => Array
(
)

я все еще получаю тот же идентификатор ресурса в ответе, с каждым новым событием, которое я создаю в календаре! почему я не могу получить идентификатор события, которое я только что создал? что я сделал не так? я смотрю события или каналы?

ответ, который я получаю, все еще тот, что упоминался выше, с тем же идентификатором ресурса все время.

7

Решение

Толчок не содержит никаких данных. Это только говорит вам, что что-то изменилось в этом ресурсе. Вам нужно будет сделать запрос списка, чтобы узнать, что это было. Предпочтительно этот запрос списка будет инкрементной синхронизацией. Посмотрите, как сделать синхронизацию здесь: https://developers.google.com/google-apps/calendar/v3/sync

8

Другие решения

Чтобы получить подробности о событии, вам нужно сделать ПОЛУЧИТЬ запрос, который должен возвращать информацию о ресурсе в виде ответа JSON. Это можно сделать, передав идентификатор календаря и идентификатор события (в этом случае идентификатор события должен быть вашим идентификатором ресурса, при условии, что в вашем уведомлении был установлен просмотр событий).

0

Вам не хватает добавочной синхронизации. От сами создатели немного пересмотрена по моим вкусам:

Первое, что нужно сделать приложению, это получить новую функциональность push-уведомлений, чтобы подписаться на интересующий календарь. При изменении календаря Google уведомит ваше приложение, и приложение выполнит вызов API, чтобы получить обновление.

В качестве примера предположим, что у вас есть календарь my_calendar@my-host.com. Ваше приложение размещено на сервере с доменом my-host.com, и push-уведомления должны доставляться через веб-хук HTTPS. https://my-host.com/notification

Каждый раз, когда изменяется my_calendar@my-host.com, сервер Календаря Google запускает обратный вызов веб-перехвата в https://my-host.com/notification. После получения обратного вызова приложение должно сделать инкрементная синхронизация.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector