Учетная запись службы не может просматривать явные календари, к которым она предоставлена

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

Я следовал за инструкции по делегированию. и Пример диска для создания экземпляра сервиса (преобразован в службу календаря).

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

Если кто-то обнаружит что-то, что я пропустил или неправильно понял, пожалуйста, дайте мне знать. Любая помощь будет оценена.

Майк

set_include_path(get_include_path() . PATH_SEPARATOR . 'google-api-php-    client-master/src');
require_once 'google-api-php-client-master/src/Google/autoload.php'; // or wherever autoload.php is located

require_once "google-api-php-client/src/Google/Client.php";
require_once "google-api-php-client/src/Google/Service/Calendar.php";
require_once "google-api-php-client/src/Google/Service/Oauth2.php";

define('CALENDAR_SCOPE', 'https://www.googleapis.com/auth/calendar.readonly');
define('SERVICE_ACCOUNT_EMAIL', '[email protected]');
define('SERVICE_ACCOUNT_PKCS12_FILE_PATH', 'P12_FILE.p12');

function buildService($userEmail) {
$key = file_get_contents(SERVICE_ACCOUNT_PKCS12_FILE_PATH);
$auth = new Google_Auth_AssertionCredentials(
SERVICE_ACCOUNT_EMAIL,
array(CALENDAR_SCOPE),
$key);
$auth->sub = $userEmail;
$client = new Google_Client();
$client->setAssertionCredentials($auth);
return new Google_Service_Calendar($client);
}

$v_calendarId_primary = "[email protected]";

$service = buildService($v_calendarId_primary);

$calendarId = 'primary';
$optParams = array(
'maxResults' => 10,
'orderBy' => 'startTime',
'singleEvents' => TRUE,
'timeMin' => date('c'),
);

$results = $service->events->listEvents($v_calendarId_primary, $optParams);

if (count($results->getItems()) == 0) {
print "No upcoming events found.\n<br>";
} else {
print "Upcoming events:\n<br>";
foreach ($results->getItems() as $event) {
$start = $event->start->dateTime;
if (empty($start)) {
$start = $event->start->date;
}
printf("%s (%s)\n <br>", $event->getSummary(), $start);
}
}

0

Решение

Попробуй и сделай calendar.get на [email protected]. Это обеспечит вам доступ к календарю самостоятельно. Затем дважды проверьте, какие разрешения вы дали сервисной учетной записи. По крайней мере, вам нужно будет увидеть все детали события.

введите описание изображения здесь

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

0

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

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

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