Я пытаюсь читать свои события в Календаре Google, используя официальную PHP-библиотеку PHP и Googles.
Я создал service account
в Google Developers Console и, похоже, работал, я могу подключиться к календарю, но я получаю пустой массив:
Google_Service_Calendar_CalendarList Object ([collection_key: protected] => items [internal_gapi_mappings: protected] => Array () [etag] => [itemsType: protected] => Google_Service_Calendar_CalendarListEntry [itemsDataType: protected] => array [kind] => [nextPageToken] = [Array ([error] => Array ([0] => Array ([domain] => global [reason] => недостаточноPermissions [0] => [arrayData: protected] => message] => Недостаточное разрешение)) [code] => 403 [message] => Недостаточное разрешение)) [обработано: protected] => Array ())
мой код:
define('APPLICATION_NAME', 'Google Calendar API PHP Quickstart'); session_start(); $client = new Google_Client(); $client->setApplicationName(APPLICATION_NAME); $client->setAuthConfigFile('client_secret.json'); $client->setAccessType('offline'); $client->setScopes(Google_Service_Calendar::CALENDAR_READONLY); if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { $client->setAccessToken($_SESSION['access_token']); #$client->setUseObjects(true); $cal=new Google_Service_Calendar($client); $calendarList=$cal->calendarList->listCalendarList(); while(true) { foreach ($calendarList->getItems() as $calendarListEntry) { echo $calendarListEntry; } $pageToken = $calendarList->getNextPageToken(); if ($pageToken) { $optParams = array('pageToken' => $pageToken); $calendarList = $service->calendarList->listCalendarList($optParams); } else { break; } } } else { $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/google/oauth2callback.php'; header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); }
Может кто-нибудь сказать мне, что я делаю неправильно. Заранее спасибо за вашу помощь.
Вы подключаетесь к учетной записи службы. У учетной записи службы есть своя учетная запись Календаря Google, которая по умолчанию не имеет календарей и по умолчанию не имеет доступа к вашей учетной записи календаря Google.
Вот что вам сообщает следующее сообщение:
Недостаточное разрешение
Если вы хотите предоставить учетной записи службы доступ к вашему Календарю Google, вам нужно будет указать адрес электронной почты учетной записи службы и поделиться своим календарем Google с ней, как если бы вы поделились ею с любым другим пользователем.