Вы должны убедиться, что пользователь либо поделился календарем, либо сделал его общедоступным.Google пытается усилить их безопасность.Метод, который вы использовали, позволил вам получить доступ к личным календарям пользователя.Это явно нежелательное поведение.API протокола данных Google поддерживает несколько методов аутентификации.Paage HERE предназначен для того, чтобы помочь вам выбрать подходящий для вашего приложения.Api docs рекомендует использовать oauth для аутентификации, а сайт http://oauth.net/ предлагает несколько библиотек для доступа к API из PHP.OpenID также является поддерживаемой опцией, а также гибридом, который призван упростить процесс, используя преимущества OAuth и OpenID.
Что касается отображения календаря в IFrame, просто создайте HTML-страницу, котораяПолучает ленту атомов для вашего календаря и отображает события в формате HTML.Так как это XML, любой метод обработки XML, который вам нравится, будет работать (например, XSLT, simpleXML и т. Д.). Затем используйте URL-адрес этой страницы в качестве атрибута источника вашего iframe.
Вот пример использования библиотеки gata ZEND:
<!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 = "username@gmail.com";
$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>
URL-адрес этого файла является источником вашего IFrame.
Удачи и удачного кодирования.