任何人都知道在不依赖当前登录用户的情况下直接向日历进行身份验证和发布的正确方法吗?几个星期前,我构建了一个使用标准Oauth 2.0协议的日历,但这依赖于用户浏览器存储的会话。我有一个日历,我想从我用基本PHP框架编写的应用程序传递事件。我更关心其他人使用的最佳做法。你的答案可能很简单,不要这样做。非常感谢。
答案 0 :(得分:1)
尝试Zend_Gdata_Calendar使用此库,您可以从谷歌日历中插入或获取任何用户的事件(显然具有正确的用户名和密码),并与您自己的日历集成或显示它。这里有一个简短的例子:
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient('gmail@user.com', '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();
}
使用此功能,您可以使用邮件和密码从任何用户的日历表中添加,更新,编辑或删除事件......
答案 1 :(得分:1)
启用离线功能时,使用OAuth 2和授权代码流(Web服务器流)。存储刷新令牌(无限期持续到用户撤销为止),即使用户当前未登录,您也可以将事件上传到Google日历。
更多信息: https://developers.google.com/accounts/docs/OAuth2WebServer#offline