dvico / google-calendar
管理 Google 日历上的事件
Requires
- php: ~5.6 || ^7.0
- google/apiclient: ^2.2
- illuminate/support: ^5.4.0
- nesbot/carbon: ^1.21
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ~3.4.6
- phpunit/phpunit: ^6.2
README
此包使与 Google 日历协同工作变得轻松。一旦设置完成,您可以执行以下操作
use Spatie\GoogleCalendar\Event; //create a new event $event = new Event; $event->name = 'A new event'; $event->startDateTime = Carbon\Carbon::now(); $event->endDateTime = Carbon\Carbon::now()->addHour(); $event->addAttendee(['email' => 'youremail@gmail.com']); $event->addAttendee(['email' => 'anotherEmail@gmail.com']); $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 安装此包
composer require spatie/laravel-google-calendar
接下来,必须注册服务提供者
'providers' => [ ... Spatie\GoogleCalendar\GoogleCalendarServiceProvider::class, ];
可选地,必须注册 Spatie\GoogleCalendar\GoogleCalendarFacade
'aliases' => [ ... 'GoogleCalendar' => Spatie\GoogleCalendar\GoogleCalendarFacade::class, ... ]
您必须使用此命令发布配置
php artisan vendor:publish --provider="Spatie\GoogleCalendar\GoogleCalendarServiceProvider"
这将发布位于您的 config 目录中的名为 google-calendar.php
的文件,内容如下
return [
/*
* Path to the json file containing the credentials.
*/
'service_account_credentials_json' => storage_path('app/google-calendar/service-account-credentials.json'),
/*
* The id of the Google Calendar that will be used by default.
*/
'calendar_id' => env('GOOGLE_CALENDAR_ID'),
];
如何获取与 Google Calendar 通信的凭证
首先,您需要获取一些凭证以使用 Google API。假设您已经创建了一个 Google 账户并已登录。前往 Google API 控制台,然后在页眉中点击 "选择项目"。
接下来,我们必须指定项目可以消耗哪些 API。在可用的 API 列表中点击 "Google Analytics API"。在下一个屏幕上点击 "启用"。
现在,您已经创建了一个可以访问 Analytics API 的项目,是时候下载包含这些凭证的文件了。点击侧边栏中的 "凭证"。您希望创建一个 "服务账户密钥"。
在下一个屏幕上,您可以为服务账户命名。您可以取任何您喜欢的名字。在服务账户 id 中,您会看到一个电子邮件地址。我们将在本指南的后面使用此电子邮件地址。选择 "JSON" 作为密钥类型,然后点击 "创建" 下载 JSON 文件。
将 json 文件保存在您的 Laravel 项目中,位置在配置文件中指定的 service_account_credentials_json
键的位置。由于 json 文件可能包含敏感信息,我不建议将其提交到您的 git 仓库中。
现在,API 站点上已经设置好了所有内容,我们还需要在 Google Calendar 站点上配置一些内容。前往 Google Calendar,查看您想要通过 PHP 使用的日历的设置。在“共享此日历”选项卡中,添加在 API 站点上创建凭证时显示的服务账户 id。
打开“日历详情”选项卡以查看日历的 id。您需要在配置文件中指定该 id。
用法
获取事件
您可以通过简单地调用 Event::get();
来获取所有事件,这将返回未来一年的所有事件。事件以 Spatie\GoogleCalendar\Event
对象的形式出现。
函数的完整签名是
public static function get(Carbon $startDateTime = null, Carbon $endDateTime = null, array $queryParameters = [], string $calendarId = null): Collection
您可以在 $queryParameters
中传递的参数列表可以在 Google 日历 API 文档中关于 list
的文档 上找到。
访问事件的开始和结束日期
您可以使用这些获取器以 Carbon 实例的形式检索开始和结束日期
$events = Event::get(); $events[0]->startDate; $events[0]->startDateTime; $events[0]->endDate; $events[0]->endDateTime;
创建事件
您可以直接创建一个 Spatie\GoogleCalendar\Event
-对象
$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();
获取单个活动
Google为每个单独的活动分配一个唯一的ID。您可以通过使用get
方法获取活动,然后在Spatie\GoogleCalendar\Event
对象上获取id
属性来获取此ID。
// get the id of the first upcoming event in the calendar. $calendarId = Event::get()->first()->id;
您可以使用此ID从Google获取单个活动。
Event::find($calendarId);
更新活动
很简单,只需更改一些属性并调用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();
限制
Google日历API提供了许多选项。此包不支持所有这些选项。例如,无法使用此包正确管理重复活动。如果您坚持使用名称和日期创建活动,应该没有问题。
从v1升级到v2
v1
和v2
之间的唯一主要区别在于,在内部使用的是Google API v2而不是v1。以下是升级所需的步骤:
- 将配置文件从
laravel-google-calendar
重命名为google-calendar
。 - 在配置文件中,将
client_secret_json
键重命名为service_account_credentials_json
。
变更日志
有关最近更改的更多信息,请参阅变更日志。
测试
composer test
贡献
有关详细信息,请参阅贡献指南。
安全
如果您发现任何安全相关的问题,请通过电子邮件freek@spatie.be联系,而不是使用问题跟踪器。
明信片软件
您可以使用此包,但如果它进入您的生产环境,我们非常感谢您从您的家乡寄给我们一张明信片,说明您正在使用我们的哪个包。
我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。
我们将所有收到的明信片发布在我们的公司网站上。
鸣谢
感谢Sebastiaan Luca在创建此包的第二版时提供的巨大帮助。
支持我们
Spatie 是一家位于比利时安特卫普的网络设计公司。您可以在我们的网站上找到我们所有开源项目的概述 在这里。
您的业务是否依赖于我们的贡献?联系并支持我们在Patreon上的工作。所有承诺都将致力于分配人力以维护和新奇事物。
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。