특정 Google 캘린더에 대한 zend_gdata 피드 받기
-
20-09-2019 - |
문제
특정 캘린더의 이벤트 피드를 얻는 방법에 대한 긴 상세한 질문이 있었지만 게시하기 전에 솔루션을 알아 냈습니다. 그러나 솔루션이 있어도 나는이 과정에 대해 내가 무엇을 놓치고 있는지 궁금해하고있다. 단일 캘린더의 이벤트 피드 (또는 해당 피드 검색)를 얻으려면 다음을 수행합니다.
- 인증 (분명히)
- 달력 목록을 얻습니다 : GetCalendarListFeed ();
- '캘린더'객체 중 하나에서 ID 속성을 가져옵니다.
- 변경 : .../Calendar/Feeds/Default/xxx%40yyy
- to : .../calendar/feeds/xxx%40yy/private/full
- getCalendareventFeed ()를 해당 캘린더의 쿼리로 전달하십시오.
신분증을 조작 해야하는 이유는 무엇입니까? Zend_gdata에 대한 문서가 Google과 Zend 사이트에 모두 퍼져있는 것 같습니다. getCalendarListFeed ()의 사용 가능한 속성에 대한 참조가 좋지 않았으므로 ID 이외의 것을 가져와야할까요?
거기처럼 보인다 가지다 더 간단한 방법으로 - 여기서 내가 무엇을 놓치고 있습니까?
해결책
ID를 조작 할 필요가 없습니다.
당신이 보면 프로토콜 가이드, 거기에 <link rel="alternate" .../>
원하는 URL을 포함하는 요소.
PHP 클라이언트에서는 다음을 호출 하여이 링크를 검색 할 수 있습니다.
// $entry is an instance of Zend_Gdata_Calendar_ListEntry
$link = $entry->getAlternateLink()->getHref();
또한 찾고있는 문서는 다음과 같습니다.http://framework.zend.com/apidoc/1.9/zend_gdata/calendar/zend_gdata_calendar_listentry.html
다른 팁
나는이 같은 질문에 대한 답을 찾고 있었고 결국 다음을 생각해 냈습니다.
$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');
처음에 나를 던진 부분은 호출의 "사용자"부분이 실제로 캘린더 ID라는 것입니다. 그런 다음 다음과 같은 작업을 수행 할 수 있습니다.
$events = $Service->getCalendarEventFeed($Query);
foreach ($events as $Event)
{
// work with Event object here...
}
(위는 실제로 시도/캐치로 둘러싸여 있어야하지만 여기서는 너무 게으르다.)