此软件包使与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 "这将在您的config-directory中发布一个名为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日历API。

现在,您已经创建了一个可以访问日历API的项目了,该下载具有这些凭据的文件了。单击侧边栏中的“凭据”,然后按“ API&Services中的凭据”链接。

在此页面上,打开“创建凭据”下拉曲,然后选择“服务帐户密钥”。

在下一个屏幕上,您可以给服务帐户一个名称。您可以命名任何想要的东西。在服务帐户ID中,您会看到一个电子邮件地址。我们将在本指南稍后使用此电子邮件地址。选择“ JSON”作为密钥类型,然后单击“创建”以下载JSON文件。您将警告说,服务帐户没有角色,您可以安全地忽略它并创建服务帐户而无需分配角色。
如果您已委派了范围内对服务帐户的访问权,并且想模仿用户帐户,请在配置文件中指定用户帐户的电子邮件地址。

将JSON在您的Laravel项目中保存在此软件包的配置文件的service_account_credentials_json键中指定的位置。由于JSON文件包含潜在的敏感信息,因此我不建议将其提交给您的GIT存储库。
现在,一切都在API网站上设置了,我们需要在Google日历网站上配置某些内容。前往Google日历,并查看要通过PHP使用的日历的设置。在“与特定人员共享”选项卡上,按“添加人员”按钮,并添加在API站点上创建凭据时显示的服务帐户ID。


向下滚动到“集成日历”部分以查看日历的ID。您需要在配置文件中指定该ID。

该软件包支持OAuth2身份验证。这使您可以通过实际的Google帐户进行身份验证,并使用自己的Google帐户创建和管理事件。
OAuth2身份验证还需要一个令牌文件,除了凭据文件。生成这两个文件的最简单方法是使用PHP QuickStart工具。 token.json本指南将生成两个credentials.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中传递的参数在Google日历API文档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 );简单,只需更改一些属性,然后调用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日历API的颜色定义。您可以在这里找到它们。
$ yourevent -> setColorId ( 11 );Google日历API提供了许多选项。此软件包并不支持所有包装。例如,本软件包无法正确管理重复事件。如果您坚持使用名称和日期创建事件,那么您应该可以。
v1和v2之间的唯一主要区别是,在引擎盖下使用Google API V2而不是V1。以下是升级所需的步骤:
laravel-google-calendar重命名config File到google-calendarclient_secret_json键to service_account_credentials_json 有关最近发生了变化的更多信息,请参见ChangElog。
composer test 请有关详细信息,请参阅贡献。
如果发现任何与安全有关的问题,请发送电子邮件至[email protected],而不是使用问题跟踪器。
非常感谢Sebastiaan Luca为创建此包装的V2的巨大帮助。
麻省理工学院许可证(麻省理工学院)。请参阅许可证文件以获取更多信息。