2014-11-04 40 views
6

當日歷中創建新活動時,我成功地將Google日曆中的推送通知導入到我的系統中。 推送通知在POST身體已經沒有數據和POST頭是這些:如何從Google日曆中獲取活動詳情

[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/[email protected]/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) 

哪裏是在日曆中創建的新事件的詳細信息? 我如何得到它們?

網上信息和谷歌文檔中的任何信息(一直在尋找小時): https://developers.google.com/google-apps/calendar/v3/push

到哪裏都是在事件的詳細信息?

UPDATE:

我使用此代碼設置我的日曆的手錶:

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:

[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 
    (
    ) 

我仍然會在響應中獲得相同的資源ID,並在日曆中創建每個新事件!爲什麼我無法獲得剛剛創建的事件的事件ID?我做錯了什麼?我在看事件或頻道嗎?

我得到的答覆仍然是上面提到的答覆,它始終具有相同的資源ID。

+0

我是否應該在推送通知本身中接收觸發推送通知的事件詳細信息?如果不是,我怎麼知道哪個事件改變觸發了它? – Rodniko 2014-11-04 17:49:43

+0

@rodnika不幸的沒有。請參閱下面的答案。總之,你需要做一個同步來獲得改變的事件。 – FullStack 2015-04-06 04:21:55

+0

http:// stackoverflow可能存在重複。com/questions/18308751/response-from-google-regard-push-notification/ – FullStack 2015-04-06 04:22:37

回答

0

要獲取活動詳細信息,您需要提出GET請求,該請求應該返回資源信息作爲JSON響應。您可以通過傳入日曆ID和事件ID(在這種情況下,eventId應該是您的資源ID,假設您的通知設置爲監視事件)。

+1

謝謝你的迴應,Andy。我收到的資源始終具有相同的資源ID,無論我在日曆中添加了哪個新事件。根據你的回覆,我根本不會觀看事件,因爲那樣我就會在新事件的每個推送通知消息中獲得不同的資源ID? – Rodniko 2014-11-05 05:08:34

+0

我更新了帖子,以便您看到手錶的代碼。我在看頻道或活動嗎?如果我觀察事件,爲什麼我不把新的事件ID作爲資源ID? – Rodniko 2014-11-05 06:24:57

+1

您確定我應該在推送通知響應中的「X-Goog-Resource-ID」參數中獲取我在日曆中添加的新事件的事件ID嗎? – Rodniko 2014-11-05 07:19:35

0

您缺少增量同步。從the creators themselves根據我的口味略微修改:

應用程序需要做的第一件事是獲得新的推送功能是訂閱感興趣的日曆。當日歷發生變化時,Google會通知您的應用,應用會執行API調用以獲取更新。

舉一個例子,假設你有一個日曆[email protected]。您的應用託管在帶有my-host.com域名的服務器上,推送通知應發送到HTTPS Web掛鉤https://my-host.com/notification

每次[email protected]發生更改時,Google Calendar服務器都會觸發Web - 掛鉤回調在https://my-host.com/notification。收到回調後,該應用需要執行incremental sync

相關問題