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