แพ็คเกจนี้ทำให้การทำงานกับ 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 Console และคลิก "เลือกโครงการ" ในส่วนหัว

ต่อไปเราต้องระบุว่า API ใดที่โครงการอาจใช้ จากส่วนหัวเลือก "เปิดใช้งาน API และบริการ"

ในหน้าถัดไปค้นหา "ปฏิทิน" และเลือก "Google Calendar API" จากรายการ

จากที่นี่กด "เปิดใช้งาน" เพื่อเปิดใช้งาน Google ปฏิทิน API สำหรับโครงการนี้

ตอนนี้คุณได้สร้างโครงการที่สามารถเข้าถึงปฏิทิน API ได้เวลาดาวน์โหลดไฟล์ด้วยข้อมูลรับรองเหล่านี้ คลิก "ข้อมูลรับรอง" ในแถบด้านข้างจากนั้นกดลิงค์ "ข้อมูลรับรองใน APIS & Services"

จากหน้านี้เปิด "สร้างข้อมูลรับรอง" แบบเลื่อนลงและเลือก "คีย์บัญชีบริการ"

บนหน้าจอถัดไปคุณสามารถให้ชื่อบัญชีบริการได้ คุณสามารถตั้งชื่อสิ่งที่คุณต้องการ ในรหัสบัญชีบริการคุณจะเห็นที่อยู่อีเมล เราจะใช้ที่อยู่อีเมลนี้ในภายหลังในคู่มือนี้ เลือก "JSON" เป็นประเภทคีย์และคลิก "สร้าง" เพื่อดาวน์โหลดไฟล์ JSON คุณจะได้รับคำเตือนว่าบัญชีบริการไม่มีบทบาทคุณสามารถเพิกเฉยต่อสิ่งนี้ได้อย่างปลอดภัยและสร้างบัญชีบริการโดยไม่ต้องกำหนดบทบาท
หากคุณได้มอบหมายการเข้าถึงบัญชีบริการทั่วทั้งโดเมนและคุณต้องการปลอมตัวเป็นบัญชีผู้ใช้ให้ระบุที่อยู่อีเมลของบัญชีผู้ใช้ในไฟล์กำหนดค่า

บันทึก JSON ภายในโครงการ Laravel ของคุณที่ตำแหน่งที่ระบุไว้ในคีย์ service_account_credentials_json ของไฟล์กำหนดค่าของแพ็คเกจนี้ เนื่องจากไฟล์ JSON มีข้อมูลที่ละเอียดอ่อนฉันจึงไม่แนะนำให้ส่งข้อมูลไปยังที่เก็บ GIT ของคุณ
ตอนนี้ทุกอย่างถูกตั้งค่าบนเว็บไซต์ API เราจะต้องกำหนดค่าบางอย่างบนเว็บไซต์ Google ปฏิทิน ตรงไปที่ Google ปฏิทินและดูการตั้งค่าปฏิทินที่คุณต้องการทำงานด้วยผ่าน PHP บนแท็บ "แชร์กับคนเฉพาะ" กดปุ่ม "เพิ่มคน" และเพิ่มรหัสบัญชีบริการที่แสดงเมื่อสร้างข้อมูลรับรองบนเว็บไซต์ API


เลื่อนลงไปที่ส่วน "รวมปฏิทิน" เพื่อดู 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
ลายเซ็นเต็มของฟังก์ชั่นคือ:
public static function get( Carbon $ startDateTime = null , Carbon $ endDateTime = null , array $ queryParameters = [], string $ calendarId = null ): Collection พารามิเตอร์ที่คุณสามารถส่งผ่านใน $queryParameters จะแสดงอยู่ในเอกสารใน list ที่ Google ปฏิทิน API เอกสาร
คุณสามารถใช้ getters เหล่านี้เพื่อดึงวันที่เริ่มต้นและสิ้นสุดเป็นอินสแตนซ์คาร์บอน:
$ events = Event:: get ();
$ events [ 0 ]-> startDate ;
$ events [ 0 ]-> startDateTime ;
$ events [ 0 ]-> endDate ;
$ events [ 0 ]-> endDateTime ; คุณสามารถขึ้นใหม่ได้ SpatieGoogleCalendarEvent -Ovject
$ 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 ที่ไม่ซ้ำกันให้กับทุกเหตุการณ์ คุณสามารถรับ ID นี้ได้โดยรับกิจกรรมโดยใช้วิธี get และรับคุณสมบัติ id บน SpatieGoogleCalendarEvent -Ovject:
// 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 ); ง่ายเพียงแค่เปลี่ยนคุณสมบัติบางอย่างและโทร 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] แทนที่จะใช้ตัวติดตามปัญหา
ขอขอบคุณ Sebastiaan Luca สำหรับความช่วยเหลือครั้งใหญ่ของเขาในการสร้าง V2 ของแพ็คเกจนี้
ใบอนุญาต MIT (MIT) โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม