您必须确保用户已经共享日历或将其公开。 Google正在努力加强他们的安全。您使用的方法允许您访问用户的私人日历。这显然是不受欢迎的行为。 Google数据协议api支持多种身份验证方法。该分类HERE旨在帮助您选择哪一种适合您的应用。 api文档建议使用oauth进行身份验证,并且网站http://oauth.net/提供了几个用于从PHP访问API的库。 OpenID也是一个受支持的选项,也是一种混合体,它旨在通过利用OAuth和OpenID来简化流程。
只要在IFrame中显示日历,只需创建一个HTML页面,为您的日历检索atom feed并将事件显示为html。因为它是XML,所以您喜欢的任何XML处理方法都可以使用(即XSLT,simpleXML等)。然后使用此页面的url作为iframe的源属性。
下面是使用Zend GATA库的例子:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Example List of calendar contents</title>
</head>
<body>
<?php
// load library
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
Zend_Loader::loadClass('Zend_Http_Client');
// create authenticated HTTP client for Calendar service
$gcal = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$user = "[email protected]";
$pass = "pass";
$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $gcal);
$gcal = new Zend_Gdata_Calendar($client);
// generate query to get event list
$query = $gcal->newEventQuery();
$query->setUser('default');
$query->setVisibility('private');
$query->setProjection('basic');
// get and parse calendar feed
// print output
try { $feed = $gcal->getCalendarEventFeed($query); }
catch (Zend_Gdata_App_Exception $e) { echo "Error: " . $e->getResponse(); }
?>
<h1><?php echo $feed->title; ?></h1>
<p><?php echo $feed->totalResults; ?> event(s) found.<p/>
<ol>
<?php
foreach ($feed as $event)
{
echo "<li>\n";
echo "<h2>" . stripslashes($event->title) . "</h2>\n";
echo stripslashes($event->summary) . " <br/>\n";
echo "</li>\n";
}
echo "</ul>";
?>
</ol>
</body>
</html>
此文件的网址是iframe的来源。
祝你好运,快乐的编码。
上帝的缘故ppl。它是Zend Framework,Zend是一家公司。 – markus