У меня возникли проблемы с использованием API Календаря Google с помощью клиентской библиотеки PHP.
Ниже мой код:
<?php
require_once 'google-api-php-client/src/Google_Client.php';
require_once 'google-api-php-client/src/contrib/Google_CalendarService.php';
define("CLIENT_ID", "blah blah blah");
define("SERVICE_ACCOUNT_NAME", "blah blahblah");
define("KEY_FILE", "keykeykey.p12");
$client = new Google_Client();
$client->setApplicationName("Google Calendar Sample");
$client->setUseObjects(true);
session_start();
if (isset($_SESSION['token']))
{
$client->setAccessToken($_SESSION['token']);
}
$key = file_get_contents(KEY_FILE);
$client->setAssertionCredentials(new Google_AssertionCredentials(
SERVICE_ACCOUNT_NAME,
array('https://www.googleapis.com/auth/calendar'),
$key)
);
$client->setClientId(CLIENT_ID);
$service = new Google_CalendarService($client);
///////////////////////////////////////////////////////////////////
try
{
$calendar = new Google_Calendar();
$calendar->setSummary('test');
$createdCalendar = $service->calendars->insert($calendar);
var_dump($createdCalendar);
}
catch(Google_ServiceException $e)
{
var_dump($e);
}
///////////////////////////////////////////////////////////////////
if ($client->getAccessToken())
{
$_SESSION['token'] = $client->getAccessToken();
}
?>
Дамп $createdCalendar выглядит следующим образом:
object(Google_Calendar)[15]
public 'kind' => string 'calendar#calendar' (length=17)
public 'description' => null
public 'summary' => string 'test' (length=3)
public 'etag' => string '"wT71Iy7ZAyY0SAhLu4jxO8w9qqM/zHZjSmLgdGM-FmXSbf2H0YONYb0"' (length=57)
public 'location' => null
public 'timeZone' => null
public 'id' => string '[email protected]' (length=52)
Это показывает, что календарь был создан успешно, потому что идентификатор был предоставлен Google. Однако этот календарь не отображается в списке календарей, когда я открываю календарь Google в своем веб-браузере.
Есть идеи?
Кстати, я точно знаю, что настройка моего двухстороннего OAuth2 работает, потому что, если я заменю блок кода между ////////////// следующим, он будет работать нормально
$event = new Google_Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new Google_EventDateTime();
$start->setDateTime('2012-12-15T16:00:00.000-08:00');
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime('2012-12-15T19:00:00.000-08:00');
$event->setEnd($end);
$attendee1 = new Google_EventAttendee();
$attendee1->setEmail('[email protected]');
$attendees = array($attendee1);
$event->attendees = $attendees;
$createdEvent = $service->events->insert('primary', $event);
error.log
? - person feeela   schedule 13.12.2012google
,calendar
иapi
не означает, что вы говорите об API Календаря Google. Для этого есть отдельный тег. - person Charles   schedule 13.12.2012