2009-10-08 111 views
5

我有一個關於如何獲取特定日曆的事件Feed的詳細問題,但在發佈之前計算(我認爲)解決方案。但是,即使解決方案我仍然想知道我錯過了這個過程。爲了得到一個日曆的事件飼料(或搜索飼料)我執行以下操作:獲取特定Google日曆的Zend_GData Feed

  • 進行身份驗證(顯然)
  • 獲取日曆列表:getCalendarListFeed();
  • 從 '日曆' 的一個獲取id屬性對象
  • 變化:... /日曆/供稿/默認/ XXX%40YYY
  • 要:... /日曆/供稿/ XXX%40YYY /私人/全部
  • 通過getCalendarEventFeed()來查詢該日曆。

爲什麼我必須操縱ID?似乎Zend_Gdata的文檔分佈在Google和Zend的網站上。我沒有找到來自getCalendarListFeed()的可用屬性的一個很好的參考,所以也許我應該獲取除ID之外的其他東西?

它似乎有是更直接的方式 - 我在這裏錯過了什麼?

回答

2

我一直在尋找一個答案同樣的問題,並最終提出以下幾點:

$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; 
$Client = Zend_Gdata_ClientLogin::getHttpClient('googleaccount','googlepass',$service); 
$Service = new Zend_Gdata_Calendar($Client); 

$Query = $Service->newEventQuery(); 
$Query->setUser('calendarid'); # As you know, you can obtain this with getCalendarListFeed() 
$Query->setVisibility('public'); 
$Query->setProjection('full'); 
$Query->setOrderby('starttime'); 
$Query->setFutureevents('true'); 

首先扔我的部分是,「用戶」porti通話實際上是日曆ID。然後,你可以這樣做:

$events = $Service->getCalendarEventFeed($Query); 
foreach ($events as $Event) 
{ 
    // work with Event object here... 
} 

(以上應該被封閉在一個try/catch,但我懶得做,在這裏。)

+0

的calendarid是的電子郵件地址日曆在私人設置。 setVisibility - >('private'); #私人日曆(不公開) – 2013-09-15 11:05:38

相關問題