API Календаря Google с проблемой учетной записи службы, Недостаточно разрешения

API Календаря Google показывает ошибку недостаточного разрешения.

Неустранимая ошибка: необработанное исключение «Google_Service_Exception» с сообщением «Ошибка вызова GET https://www.googleapis.com/calendar/v3/users/me/calendarList: (403) Недостаточно прав доступа ‘в

<?php

session_start();
include_once "templates/base.php";

require_once realpath(dirname(__FILE__)'/../src/Google/autoload.php');

$client_id = '110224493213908548123'; //Client ID .apps.googleusercontent.com
$service_account_name = 'test@test-156006.iam.gserviceaccount.com'; //Email Address
$key_file_location = 'test.p12'; //key.p12

$client = new Google_Client();
$client->setApplicationName("Easycarcare");
$client->addScope("https://www.googleapis.com/auth/calendar");
//$client->addScope("https://www.googleapis.com/auth/calendar.readonly");
$service = new Google_Service_Calendar($client);if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/calendar'),
$key
);

$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();$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;
}
}

0

Решение

Вы должны помнить, что учетная запись службы не вы. Сервисная учетная запись является фиктивным пользователем. У него есть собственная учетная запись Google Calendar, собственная учетная запись Google Drive и, вероятно, еще куча.

Вы не увидите никаких данных в списке календаря, пока не начнете создать календарь а затем добавить его в список календаря.

Помните, что список календарей — это не список календарей, к которым у пользователя есть доступ, это просто отображение в веб-представлении в левом нижнем углу. Таким образом, даже если вы поделились одним из своих личных календарей со своей учетной записью службы, он не будет отображаться в списке календаря учетных записей служб, пока вы не добавите его в этот список программным путем.

Ответ: вы не видите никаких данных, потому что учетная запись службы не имеет данных.

0

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

Вы пытались добавить свой адрес электронной почты test@test-156006.iam.gserviceaccount.com в свой аккаунт Google.

Это может быть связано с тем, что у этой учетной записи службы недостаточно прав для API-интерфейса календаря.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector