Доступ к Календарю Google с помощью API v3

Я пытаюсь переписать устаревшее приложение, которое раньше не писал, используя API Календаря Google v3.

Я реализовал google-api-php-client, создал ключ API в консоли разработчика и прошел процесс аутентификации. У меня есть accessToken который я сохраняю в базе данных, и когда он истекает, я могу обновить этот токен в порядке.

Тем не менее, я не могу работать с календарями совсем.

Я слежу за тем, что ограниченная документация уже существует и имеет следующее:

$this->client = new Google_Client();
$this->client->setClientId( $this->settings['clientId'] );
$this->client->setClientSecret( $this->settings['clientSecret'] );
$this->client->setAccessToken( $this->settings['accessToken'] );

$service = new Google_Service_Calendar($this->client);

$calendarList = $service->calendarList->listCalendarList();

while(true) {
foreach ($calendarList->getItems() as $calendarListEntry) {
echo $calendarListEntry->getSummary();
}

$pageToken = $calendarList->getNextPageToken();

if ($pageToken) {
$optParams = array('pageToken' => $pageToken);
$calendarList = $service->calendarList->listCalendarList($optParams);
} else {
break;
}
}

Ошибка, которую я получаю обратно:

Message:  Undefined property: Google_Service_Calendar_CalendarList::$items

Я проверил свою учетную запись Календаря Google, и все календари открыты для совместного использования, поэтому проблем не должно быть, хотя я не понимаю, почему это является проблемой, так как я все равно использую аутентифицированную учетную запись.

Кто-нибудь может дать совет?

Большое спасибо

5

Решение

Ошибка, которую вы получаете

Message:  Undefined property: Google_Service_Calendar_CalendarList::$items

Это потому, что объект пуст

замещать

while(true) {
foreach ($calendarList->getItems() as $calendarListEntry) {
echo $calendarListEntry->getSummary();
}Undefined property

с этим избавиться от ошибки.

if ($calendarList->getItems()) {
foreach ($calendarList->getItems() as $calendarListEntry) {
echo $calendarListEntry->getSummary();

}

Также отрегулируйте следующее

$this->client = new Google_Client();

Должно быть

$client = new Google_Client();
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]