Этот пакет делает работу с календарем Google в бриз. После того, как он будет настроен, вы можете сделать эти вещи:
use Spatie GoogleCalendar Event ;
// create a new event
$ event = new Event ;
$ event -> name = ' A new event ' ;
$ event -> description = ' Event description ' ;
$ event -> startDateTime = Carbon Carbon:: now ();
$ event -> endDateTime = Carbon Carbon:: now ()-> addHour ();
$ event -> addAttendee ([
' email ' => ' [email protected] ' ,
' name ' => ' John Doe ' ,
' comment ' => ' Lorum ipsum ' ,
' responseStatus ' => ' needsAction ' ,
]);
$ event -> addAttendee ([ ' email ' => ' [email protected] ' ]);
$ event -> addMeetLink (); // optionally add a google meet link to the event
$ event -> save ();
// get all future events on a calendar
$ events = Event:: get ();
// update existing event
$ firstEvent = $ events -> first ();
$ firstEvent -> name = ' updated name ' ;
$ firstEvent -> save ();
$ firstEvent -> update ([ ' name ' => ' updated again ' ]);
// create a new event
Event:: create ([
' name ' => ' A new event ' ,
' startDateTime ' => Carbon Carbon:: now (),
' endDateTime ' => Carbon Carbon:: now ()-> addHour (),
]);
// delete an event
$ event -> delete ();Spatie - это агентство WebDesign, базирующееся в Антверпене, Бельгия. Вы найдете обзор всех наших проектов с открытым исходным кодом на нашем сайте.
Мы вкладываем много ресурсов в создание лучших в классе в пакетах с открытым исходным кодом. Вы можете поддержать нас, купив один из наших платных продуктов.
Мы очень ценим, что вы отправили нам открытку из своего родного города, упомянув, какой из наших пакетов вы используете. Вы найдете наш адрес на нашей странице контактов. Мы публикуем все полученные открытки на нашей виртуальной стене открытки.
Вы можете установить пакет через композитор:
composer require spatie/laravel-google-calendarВы должны опубликовать конфигурацию с этой командой:
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider " Это опубликует файл с именем google-calendar.php в вашем конфигурации с этим содержимым:
return [
' default_auth_profile ' => env ( ' GOOGLE_CALENDAR_AUTH_PROFILE ' , ' service_account ' ),
' auth_profiles ' => [
/*
* Authenticate using a service account.
*/
' service_account ' => [
/*
* Path to the json file containing the credentials.
*/
' credentials_json ' => storage_path ( ' app/google-calendar/service-account-credentials.json ' ),
],
/*
* Authenticate with actual google user account.
*/
' oauth ' => [
/*
* Path to the json file containing the oauth2 credentials.
*/
' credentials_json ' => storage_path ( ' app/google-calendar/oauth-credentials.json ' ),
/*
* Path to the json file containing the oauth2 token.
*/
' token_json ' => storage_path ( ' app/google-calendar/oauth-token.json ' ),
],
],
/*
* The id of the Google Calendar that will be used by default.
*/
' calendar_id ' => env ( ' GOOGLE_CALENDAR_ID ' ),
];Первое, что вам нужно сделать, это получить учетные данные для использования API Google. Я предполагаю, что вы уже создали учетную запись Google и вошли в систему. Зайдите в консоль Google API и нажмите «Выберите проект» в заголовке.

Далее мы должны указать, какие API может потреблять проект. В заголовке выберите «Включить API и услуги».

На следующей странице найдите «Календарь» и выберите «Google Calendar API» из списка.

Отсюда нажмите «Включить», чтобы включить API Google Calendar для этого проекта.

Теперь, когда вы создали проект, который имеет доступ к API календаря, пришло время загрузить файл с этими учетными данными. Нажмите «Учетные данные» на боковой панели, а затем нажмите ссылку «учетные данные в API & Services».

На этой странице откройте раскрытие «Создать учетные данные» и выберите «Ключ учетной записи службы».

На следующем экране вы можете дать Сервисной учетной записи имя. Вы можете назвать это все, что хотите. В идентификаторе учетной записи службы вы увидите адрес электронной почты. Мы будем использовать этот адрес электронной почты позже в этом руководстве. Выберите «JSON» в качестве типа ключа и нажмите «Создать», чтобы загрузить файл JSON. Вы получите предупреждение о том, что учетная запись обслуживания не имеет роли, вы можете безопасно игнорировать это и создать учетную запись службы, не назначая роли.
Если у вас делегированный доступ по всей домену к учетной записи службы и вы хотите выдать себя за учетную запись пользователя, укажите адрес электронной почты учетной записи пользователя в файле конфигурации.

Сохраните JSON внутри вашего проекта Laravel в месте, указанном в ключке service_account_credentials_json в файле конфигурации этого пакета. Поскольку файл JSON содержит потенциально конфиденциальную информацию, я не рекомендую совершать ее в вашем репозитории GIT.
Теперь, когда все настроено на сайте API, нам нужно настроить некоторые вещи на сайте Google Calendar. Зайдите в календарь Google и просмотрите настройки календаря, с которым вы хотите работать через PHP. На вкладке «Поделиться с конкретными людьми» нажмите кнопку «Добавить людей» и добавьте идентификатор учетной записи службы, который отображался при создании учетных данных на сайте API.


Прокрутите вниз в раздел «Интегрировать календарь», чтобы увидеть идентификатор календаря. Вам нужно указать этот идентификатор в файле конфигурации.

Этот пакет поддерживает аутентификацию OAuth2. Это позволяет вам аутентифицировать с реальной учетной записью Google и создавать и управлять событиями с помощью вашей собственной учетной записи Google.
Аутентификация OAuth2 требует файла токена, в дополнение к файлу учетных данных. Самый простой способ создать оба этих файла - это использование инструмента PHP QuickStart. Следуя этому руководству будет генерировать два файла: credentials.json и token.json . Они должны быть спасены в вашем проекте как oauth-credentials.json и oauth-token.json соответственно. Проверьте файл конфигурации в этом пакете, чтобы получить точную информацию о том, где сохранить эти файлы.
Чтобы использовать OAuth2, вы также должны установить новую переменную среды в вашем файле .env:
GOOGLE_CALENDAR_AUTH_PROFILE =oauthЕсли вы обновляетесь из более старой версии этого пакета, вам нужно будет выпустить опубликовать конфигурацию:
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider " --forceНаконец, для более плавного опыта в вашем приложении, вместо использования инструмента QuickStart, вы можете настроить экран согласия в консоли Google API. Это позволило бы нетехническим пользователям вашего приложения легко генерировать свои собственные токены. Это совершенно необязательно.
Вы можете получить все события, просто позвонив Event::get(); Это вернет все события следующего года. Событие происходит в виде объекта SpatieGoogleCalendarEvent .
Полная подпись функции:
public static function get( Carbon $ startDateTime = null , Carbon $ endDateTime = null , array $ queryParameters = [], string $ calendarId = null ): Collection Параметры, которые вы можете передать в $queryParameters , перечислены в документации в list в Docs Google Calendar API.
Вы можете использовать эти Getters для получения даты начала и окончания в качестве углеродных экземпляров:
$ events = Event:: get ();
$ events [ 0 ]-> startDate ;
$ events [ 0 ]-> startDateTime ;
$ events [ 0 ]-> endDate ;
$ events [ 0 ]-> endDateTime ; Вы можете просто внедрить SpatieGoogleCalendarEvent -object
$ event = new Event ;
$ event -> name = ' A new event ' ;
$ event -> startDateTime = Carbon Carbon:: now ();
$ event -> endDateTime = Carbon Carbon:: now ()-> addHour ();
$ event -> save (); Вы также можете позвонить create статически:
Event:: create ([
' name ' => ' A new event ' ,
' startDateTime ' => Carbon Carbon:: now (),
' endDateTime ' => Carbon Carbon:: now ()-> addHour (),
]); Это создаст событие с определенным временем начала и окончания. Если вы хотите создать событие на целый день, вы должны использовать startDate и endDate вместо startDateTime и endDateTime .
$ event = new Event ;
$ event -> name = ' A new full day event ' ;
$ event -> startDate = Carbon Carbon:: now ();
$ event -> endDate = Carbon Carbon:: now ()-> addDay ();
$ event -> save ();Вы можете создать событие, основанное на простой текстовой строке, как это:
$ event = new Event ();
$ event -> quickSave ( ' Appointment at Somewhere on April 25 10am-10:25am ' );
// statically
Event:: quickCreate ( ' Appointment at Somewhere on April 25 10am-10:25am ' ); Google назначает уникальный идентификатор каждому событию. Вы можете получить этот идентификатор, получив события, используя метод get и получив свойство id на SpatieGoogleCalendarEvent -object:
// get the id of the first upcoming event in the calendar .
$ eventId = Event:: get ()-> first ()-> id ;
// you can also get the id after creating the event , then you can save it to database .
$ event = new Event ;
$ newEvent = $ event -> save ();
echo $ newEvent -> id ; // display the event idВы можете использовать этот идентификатор, чтобы получить одно событие из Google:
Event:: find ( $ eventId ); Легко, просто измените свой свойства и вызовите save() :
$ event = Event:: find ( $ eventId );
$ event -> name = ' My updated title ' ;
$ event -> save ();В качестве альтернативы, вы можете использовать метод обновления:
$ event = Event:: find ( $ eventId );
$ event -> update ([ ' name ' => ' My updated title ' ]);Ничего этого!
$ event = Event:: find ( $ eventId );
$ event -> delete ();Вы можете установить исходные URL -адреса в своих мероприятиях, которые видны только создателю события (см. Документы для получения дополнительной информации о свойстве источника). Эта функция работает только при аутентификации через OAuth.
$ yourEvent -> source = [
' title ' => ' Test Source Title ' ,
' url ' => ' http://testsource.url ' ,
];Вы можете установить определенные цвета для ваших событий (Colorid от 1 до 11). Возможности ограничены определениями цвета Google Calendar API. Вы можете найти их здесь.
$ yourevent -> setColorId ( 11 );Google Calendar API предоставляет много вариантов. Этот пакет не поддерживает их все. Например, повторяющиеся события не могут быть должным образом управляются с этим пакетом. Если вы придерживаетесь создания событий с именем и датой, вы должны быть в порядке.
Единственное основное различие между v1 и v2 заключается в том, что под капотом Google API V2 используется вместо V1. Вот шаги, необходимые для обновления:
laravel-google-calendar в google-calendarclient_secret_json в service_account_credentials_json Пожалуйста, смотрите ChangeLog для получения дополнительной информации о том, что изменилось в последнее время.
composer test Пожалуйста, смотрите для получения подробной информации.
Если вы обнаружите какие-либо проблемы, связанные с безопасностью, пожалуйста, напишите по электронной почте [email protected] вместо использования трекера выпуска.
Большое спасибо Себастьян Лука за большую помощь в создании V2 этого пакета.
Лицензия MIT (MIT). Пожалуйста, смотрите файл лицензии для получения дополнительной информации.