2012-08-10 67 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