deshack / laravel-google-calendar
Laravel的Google Calendar API包装器,利用Google Client API。
Requires
- php: >=7.0
- google/apiclient: ^2.2
- laravel/framework: ~5.4.0|~5.5.0|~5.6.0|~5.7.0
Replaces
- hackeresq/laravel-google-calendar: dev-master
This package is auto-updated.
Last update: 2023-08-09 23:49:08 UTC
README
Laravel的Google Calendar API包装器(与其他解决方案不同)利用Google Client API而不是Google服务帐户。与FullCalendar.io无缝集成。
安装
此包可在Laravel 5.4或更高版本中使用。
您可以通过composer安装此包
composer require hackeresq/laravel-google-calendar
在Laravel 5.5+中,服务提供者和别名将自动注册,您可以跳过此步骤。在框架的较旧版本中,请将服务提供者和别名添加到config/app.php
文件中
'providers' => [ // ... hackerESQ\GoogleCalendar\GoogleCalendarServiceProvider::class, ]; // ... 'aliases' => [ // ... 'GoogleCalendar' => hackerESQ\GoogleCalendar\Facades\GoogleCalendar::class, ];
现在,您可以发布迁移和配置文件,并通过以下命令将更新迁移到用户表中
php artisan vendor:publish --provider="hackerESQ\GoogleCalendar\GoogleCalendarServiceProvider" && php artisan migrate
注意:如果您使用的是不支持JSON字段类型的数据库(例如,较旧的MariaDB版本),在尝试运行迁移时可能会遇到数据库错误。在这种情况下,您需要将'update_users_table.php'迁移文件(由上述命令发布)中的'google_access_token'列更改为'LONGTEXT'。然后,使用php artisan migrate
重新运行迁移。
成功! laravel-google-calendar现在已安装!
配置
正确配置laravel-google-calendar的第一步,您需要Google API凭证。您可以在https://console.developers.google.com/apis/credentials/oauthclient/获取这些凭证。
将Google API凭证复制并粘贴到您的.env
文件中。例如
GOOGLE_CLIENT_ID=C13n71D_7166xlnk4q4fd24hdeteq.apps.googleusercontent.com GOOGLE_CLIENT_SECRET=s3cr37sMnYiOk4i8fr2rX
使用
可以通过易于记忆的Facade "GoogleCalendar" 访问GoogleCalendar。
可用方法
getAuthUrl()
获取中间页面的Google Client API认证URL。
可选
$redirect
:传递一个相对URL(例如 '/dashboard'),在用户通过Google认证后重定向用户。默认为网站根目录(即'/')。
isAuthed()
检查当前登录用户是否已通过Google Client API认证。
listCalendars()
列出当前登录用户的可用日历。
可选
$accessToken
:当您需要手动设置用户的访问令牌时很有用(例如,使用API认证而不是Web)。默认为users
表中的'google_access_token'列。
listEvents()
列出当前登录用户的日历事件。
可选
$calendarId
:手动设置日历ID。默认为'primary'日历。可选
$accessToken
:当您需要手动设置用户的访问令牌时很有用(例如,使用API认证而不是Web)。默认为users
表中的'google_access_token'列。可选
$start
:默认为当前月份的开始。可选
$end
:默认为当前月份的结束。可选
$timezone
:默认为null。
updateEvent($request)
必需
$request
:请求对象应该包含值为'calendarId'、'eventId'、'summary'、'location'、'description'、'allDay'、'start'和'end'的值。'timezone'和'attendees'是可选的。'Timezone'应按IANA TZDB中的相应条目格式化。'Attendees'应为一个以逗号分隔的电子邮件列表。可选
$accessToken
:当您需要手动设置用户的访问令牌时很有用(例如,使用API认证而不是Web)。默认为users
表中的'google_access_token'列。
createEvent($request)
必需
$request
:请求对象应该包含值为'calendarId'、'summary'、'location'、'description'、'allDay'、'start'和'end'的值。'timezone'和'attendees'是可选的。'Timezone'应按IANA TZDB中的相应条目格式化。'Attendees'应为一个以逗号分隔的电子邮件列表。可选
$accessToken
:当您需要手动设置用户的访问令牌时很有用(例如,使用API认证而不是Web)。默认为users
表中的'google_access_token'列。
deleteEvent($request)
必需
$request
:请求对象应该包含值为'calendarId'和'eventId'的值。可选
$accessToken
:当您需要手动设置用户的访问令牌时很有用(例如,使用API认证而不是Web)。默认为users
表中的'google_access_token'列。
暴露API
此包附带一个控制器,可以用于(或您也可以创建自己的)将上述方法暴露给API。以下是一个示例路由定义来执行此操作
// Google Calendar API routes Route::group([ 'prefix'=>'api/google' ], function () { Route::get('calendars', '\hackerESQ\GoogleCalendar\Controllers\GoogleCalendarController@listCalendars'); Route::get('events', '\hackerESQ\GoogleCalendar\Controllers\GoogleCalendarController@listEvents'); Route::put('events/{id}', '\hackerESQ\GoogleCalendar\Controllers\GoogleCalendarController@updateEvent'); Route::post('events', '\hackerESQ\GoogleCalendar\Controllers\GoogleCalendarController@createEvent'); Route::delete('events/{id}', '\hackerESQ\GoogleCalendar\Controllers\GoogleCalendarController@deleteEvent'); });
这些路由定义将在“api/google/calendars”和“api/google/events”处暴露API功能,您可以通过前端AJAX调用来使用这些功能。
FullCalendar.io集成
您可以配置此包以输入和输出FullCalendar.io可以理解的数据格式。为此,您可以修改google_calendar.php
配置文件中的'format'属性,如下所示
return [
//....
'format' => 'fullcalendar',
//....
];
然后,在初始化FullCalendar.io时,您可以通过按照上面暴露API部分的说明来使用以下方式消耗暴露的API
$('#calendar').fullCalendar({ eventSources: [ // your event source { url: 'api/google/events', type: 'GET', data: { calendar: 'primary', // define your google calendar id here }, error: function() { alert('there was an error while fetching events!'); } } // any other sources... ] });
最后
贡献
如果您想做出贡献,请随意创建一个分支并提交一个拉取请求。
错误报告
如果您注意到某些问题,请在GitHub上提出问题。