Цель
Я пытаюсь интегрировать API Календаря Google на веб-сайт моей компании, чтобы автоматизировать создание некоторые события.
События будут добавляться в календарь компании и отображаться для пользователей, поэтому мне не нужна аутентификация пользователей, я не буду работать с их собственными календарями.
Что я сделал
создал учетную запись службы OAuth 2.0, как описано в Google OAuth 2.0 для межсерверных приложений. документы
создал, скачал и добавил файл учетных данных в свой проект и добавил его путь в переменную среды
GOOGLE_APPLICATION_CREDENTIALS
;следовал примеру документации, чтобы авторизовать мои запросы используя сервисный аккаунт и документы для создания мероприятий.
Вот короткая версия моего исходного кода:$client = new Google_Client(); $client->setApplicationName("XXX"); $client->addScope(Google_Service_Calendar::CALENDAR); // "https://www.googleapis.com/auth/calendar" $client->useApplicationDefaultCredentials(); $service = new Google_Service_Calendar($client); $event = new Google_Service_Calendar_Event(/* array with event data */); $calendarId = /* calendar id taken from calendar Settings and Sharing on calendar.google.com*/; $event = $service->events->insert($calendarId, $event);
По сравнению с примером (строки 43:52) я не стал вручную проверять файлы учетных данных, а пошел прямо к
useApplicationDefaultCredentials()
.
Ошибка
Зарегистрированная ошибка из моего кода
[2020-10-19 14:29:19] local.ERROR: {
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
{"userId":2,"exception":"[object] (Google_Service_Exception(code: 404): {
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"notFound\",
\"message\": \"Not Found\"
}
],
\"code\": 404,
\"message\": \"Not Found\"
}
}
at /var/www/vendor/google/apiclient/src/Google/Http/REST.php:123)
[stacktrace]
Похоже, он вызывает неправильную конечную точку API, поскольку 404
является ответом page not found
.
Идентификатор календаря
Просто для ясности, вот откуда я взял идентификатор календаря