В проекте включен API календаря.
Я настроил сервисный аккаунт в Google Cloud Console для проекта и создал файл JSON.
Я использую свою личную учетную запись Gmail и поделился календарь с идентификатором сервисной учетной записи xxxxx@xxxxxx.iam.gserviceaccount.com и предоставили ему разрешение на внесение изменений и управление общим доступом.
Я получил идентификатор календаря из раздела Календарь Gmail -> Интеграция календаря. .
Код: Выделить всё
$serviceAccountFile = "pathtoserviceaccountjson";
$client = new Client();
$client->setApplicationName("Calendar Appointment");
$client->setAuthConfig($serviceAccountFile);
$client->setScopes(Calendar::CALENDAR);
$client->setAccessType('offline');
$calendarId = 'Google calendar id';
$service = new Calendar($client);
$calendarList = $service->calendarList->listCalendarList();
$event = new Calendar\Event(array(
'summary' => 'Test Event',
'description' => 'Test Event',
'start' => array(
'dateTime' => '2024-12-06T09:00:00-07:00'
),
'end' => array(
'dateTime' => '2024-12-06T10:00:00-07:00'
)
));
$client->setSubject(subjectline);
$event = $service->events->insert($calendarId, $event);
Неустранимая ошибка: необнаруженный Google \Service\Exception: {
"error": "unauthorized_client",
"error_description": "Клиент не имеет права получать токены доступа с помощью этого метода, или клиент не авторизован ни для одной из запрошенных областей".
Если это сработает, может ли кто-нибудь сказать мне, что я делаю неправильно?
Спасибо.
Я получаю противоречивую информацию на разных форумах. Многие сведения оказались устаревшими. Работает ли служебный аккаунт с личными учетными записями Gmail или он будет работать только с аккаунтом Google Workspace?
Подробнее здесь: https://stackoverflow.com/questions/792 ... ent-in-php
Мобильная версия