이 패키지는 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는 벨기에 앤트워프에 본사를 둔 웹 디자인 대행사입니다. 웹 사이트에서 모든 오픈 소스 프로젝트에 대한 개요를 찾을 수 있습니다.
우리는 수업에서 가장 좋은 오픈 소스 패키지를 만들기 위해 많은 자원을 투자합니다. 유료 제품 중 하나를 구매하여 우리를 지원할 수 있습니다.
귀하가 사용하는 패키지 중 어느 패키지를 언급하면서 고향에서 엽서를 보내 주셔서 감사합니다. 연락처 페이지에서 주소를 찾을 수 있습니다. 우리는 가상 엽서 벽에 수신 된 엽서를 모두 게시합니다.
작곡가를 통해 패키지를 설치할 수 있습니다.
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 ' ),
];가장 먼저해야 할 일은 Google의 API를 사용하기위한 자격 증명을 얻는 것입니다. Google 계정을 이미 작성하고 로그인했다고 가정합니다. Google API 콘솔로 가서 헤더에서 "프로젝트 선택"을 클릭하십시오.

다음으로 프로젝트가 소비 할 API를 지정해야합니다. 헤더에서 "API 및 서비스 활성화"를 선택하십시오.

다음 페이지에서 "캘린더"를 검색하고 목록에서 "Google Calendar API"를 선택하십시오.

여기에서 "활성화"를 눌러이 프로젝트의 Google Calendar API를 활성화하십시오.

캘린더 API에 액세스 할 수있는 프로젝트를 만들었으므로 이러한 자격 증명이있는 파일을 다운로드 할 차례입니다. 사이드 바에서 "자격 증명"을 클릭 한 다음 "APIS & Services의 자격 증명"링크를 누릅니다.

이 페이지에서 "자격 증명 만들기"드롭 다운을 열고 "서비스 계정 키"를 선택하십시오.

다음 화면에서는 서비스 계정에 이름을 줄 수 있습니다. 당신은 당신이 원하는 것을 이름을 지을 수 있습니다. 서비스 계정 ID에는 이메일 주소가 표시됩니다. 이 가이드의 뒷부분 에서이 이메일 주소를 사용하겠습니다. "JSON"을 키 유형으로 선택하고 "작성"을 클릭하여 JSON 파일을 다운로드하십시오. 서비스 계정에 역할이 없다는 경고를받습니다.이를 안전하게 무시하고 역할을 할당하지 않고 서비스 계정을 만들 수 있습니다.
서비스 계정에 도메인 전체 액세스를 위임하고 사용자 계정을 가장하려는 경우 구성 파일에 사용자 계정의 이메일 주소를 지정하십시오.

이 패키지의 구성 파일의 service_account_credentials_json 키에 지정된 위치에 Laravel 프로젝트 내부의 JSON을 저장하십시오. JSON 파일에는 잠재적으로 민감한 정보가 포함되어 있으므로 GIT 저장소에 커밋하는 것이 좋습니다.
모든 것이 API 사이트에 설정되었으므로 Google 캘린더 사이트에서 몇 가지 사항을 구성해야합니다. Google 캘린더로 가서 PHP를 통해 작업하려는 캘린더의 설정을보십시오. "특정 사람과의 공유"탭에서 "People Add"버튼을 누르고 API 사이트에서 자격 증명을 만들 때 표시된 서비스 계정 ID를 추가하십시오.


"캘린더 통합"섹션으로 스크롤하여 캘린더의 ID를보십시오. 구성 파일에 해당 ID를 지정해야합니다.

이 패키지는 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 Object의 형태로 제공됩니다.
함수의 전체 서명은 다음과 같습니다.
public static function get( Carbon $ startDateTime = null , Carbon $ endDateTime = null , array $ queryParameters = [], string $ calendarId = null ): Collection $queryParameters 로 전달할 수있는 매개 변수는 Google Calendar API Docs의 list 에 나열되어 있습니다.
이 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은 모든 단일 이벤트에 고유 한 ID를 할당합니다. get 메소드를 사용하여 이벤트를 얻고 SpatieGoogleCalendarEvent -Object에서 id 속성을 얻음 으로써이 ID를 얻을 수 있습니다.
// 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이 ID를 사용하여 Google에서 단일 이벤트를 가져올 수 있습니다.
Event:: find ( $ eventId ); 쉽게 속성을 변경하고 Call 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 의 유일한 주요 차이점은 Hood 아래에서 Google API V2가 V1 대신 사용된다는 것입니다. 업그레이드하는 데 필요한 단계는 다음과 같습니다.
laravel-google-calendar 에서 google-calendar 로 구성 파일의 이름을 바꿉니다client_secret_json key to service_account_credentials_json 이름을 바꿉니다. 최근에 변경된 내용에 대한 자세한 내용은 Changelog를 참조하십시오.
composer test 자세한 내용은 기여를 참조하십시오.
보안 관련 문제를 발견하면 문제 추적기를 사용하는 대신 [email protected]로 이메일을 보내주십시오.
이 패키지의 V2를 만드는 데 큰 도움을 주신 Sebastiaan Luca에게 큰 감사를드립니다.
MIT 라이센스 (MIT). 자세한 내용은 라이센스 파일을 참조하십시오.