2012-08-10 66 views
0

任何人都知道正確的方式來認證並直接發佈到日曆而不依賴於當前登錄的用戶?幾個星期前,我創建了一個使用標準Oauth 2.0協議的日曆,但這依賴於用戶瀏覽器存儲的會話。我有一個日曆,我想從一個基本的PHP框架編寫的應用程序傳遞事件。我更關心別人正在使用的最佳做法。你的答案可能很簡單,不要這樣做。非常感謝。從腳本插入事件到谷歌日曆

回答

1

使用OAuth 2和授權碼流(網絡服務器流量),並支持離線啓用。存儲刷新令牌(其無限期地持續下去,直到用戶已撤銷),你就可以上傳事件谷歌日曆,即使用戶沒有當前登錄

更多信息: https://developers.google.com/accounts/docs/OAuth2WebServer#offline

+0

感謝您的支持。我知道有一個更好的方法。 – Rivers 2012-08-13 14:40:49

1

嘗試Zend_Gdata_Calendar與這個庫,你可以插入或從任何用戶獲取事件(用正確的用戶名和密碼,很明顯)從谷歌日曆,並與自己的日曆整合或顯示it..here短的例子:

$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; 
    $client = Zend_Gdata_ClientLogin::getHttpClient('[email protected]', 'gmailpassword', $service); 
    $service = new Zend_Gdata_Calendar($client); 



    $query = $service->newEventQuery(); 
    $query->setUser('default'); 
    $query->setVisibility('private'); 


    try { 
     $eventFeed = $service->getCalendarEventFeed($query); 
    } catch (Zend_Gdata_App_Exception $e) { 
     echo "Error: " . $e->getMessage(); 
    } 


    echo "<ul>"; 
    foreach ($eventFeed as $event) { 
    echo "<li>" . $event->title . " (Event ID: " . $event->id . ")</li>"; 

    } 
    echo "</ul>"; 



    $eventURL = "http://www.google.com/calendar/feeds/default/private/full/Dir0FthEpUbl1cGma1lCalendAr"; 

    try { 
     $event = $service->getCalendarEventEntry($eventURL); 

     echo 'Evento: ' . $event->getTitle() .'<br>'; 
     echo 'detalles: ' . $event->getContent().'<br>'; 
     foreach ($event->getWhen() as $dato) 
     { 
      echo 'inicia: ' . substr($dato->startTime, 0,-19) . ' a las: ' . substr($dato->startTime, 11,-10) .'<br>'; 
      echo 'termina: ' .substr($dato->endTime,0,-19) . ' a las: ' . substr($dato->endTime,11,-10) .'<br>'; 

     } 



    } catch (Zend_Gdata_App_Exception $e) { 
     echo "Error: " . $e->getMessage(); 
    } 

有了這個,你可以添加,更新,修改或刪除日曆事件形成的郵件和密碼的用戶...

+0

僅供參考--ClientLogin將在一段時間(年)內正常工作,但已被OAuth 2正式棄用。不確定是否有人已將內置OAF 2支持到ZF中。有關棄用的更多信息:http://googledevelopers.blogspot.com/2012/04/changes-to-deprecation-policies-and-api.html – 2012-08-10 22:09:26