cronofy / cronofy
Cronofy SDK - 商业调度平台
Requires
- php: >=7.1
Requires (Dev)
- dev-master
- v1.x-dev
- v1.7.2
- v1.7.1
- v1.6.0
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.0
- v1.1.10
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.0
- v0.29.0
- v0.28.0
- v0.27.0
- v0.26.0
- v0.25.2
- v0.25.1
- v0.25.0
- v0.24.0
- v0.23.0
- v0.22.0
- v0.21.0
- v0.20.0
- v0.19.0
- v0.18.0
- v0.17.7
- v0.17.6
- v0.17.5
- v0.17.4
- v0.17.3
- v0.17.2
- v0.17.1
- v0.17.0
- v0.16.0
- v0.15.0
- v0.14.0
- v0.13.5
- v0.13.4
- v0.13.3
- v0.13.2
- v0.12.0
- dev-move-doc-comments
- dev-bulk-delete-events
- dev-112-hmac-binary
- dev-event-classes
- dev-update-php-8.1
- dev-add-event-classes-support
- dev-readme-update
- dev-add-disable-rts-endpoint
- dev-add-locale-to-upsert-event
- dev-update-packaged-description
- dev-add-rts-fields
- dev-add-init
- dev-update-to-v1.5.0
- dev-hmac-validation
- dev-github-actions-migration
- dev-GitHub
- dev-add-recurrence-hash
- dev-available-periods
- dev-update-to-1.2.0
- dev-add-smoke-test-script
- dev-http-429
- dev-new-features-readme
- dev-add-conference-service-auth
- dev-add-color-to-event-upsert
- dev-boolean-url-encode
- dev-auth-provider-name
- dev-conferencing
- dev-madewithlove-madewithlove-add-delegated-authorizations
- dev-madewithlove-add-list-accessible-calendars
- dev-rules
- dev-application-calendars
- dev-private-events
- dev-send-gzip-accept-header
- dev-smart-invite-cancel
- dev-real-time-scheduling
- dev-add-expiry-to-token
- dev-attendees-support
- dev-event-transparency
- dev-availability-api
- dev-change-participation-status
- dev-update-with-alpha-feathres
- dev-paged-iterator-error-handling
- dev-include-status-codes-in-main-file
- dev-paged-result-iterators
- dev-elevated-permissions
This package is auto-updated.
Last update: 2024-08-27 12:22:02 UTC
README
Cronofy - 一个用于所有日历(Google、iCloud、Exchange、Office 365、Outlook.com)的API
示例应用
要查看此API包装器的使用情况,请参阅我们的示例应用 这里
用法
注意:如果您从v0.x.x版本升级到v1.0.0,请阅读迁移指南
为了使用Cronofy API,您需要创建一个开发者账户。
从那里,您可以使用您的日历沙盒来访问您自己的日历,或者您可以通过创建OAuth应用来获取OAuth client_id
和 client_secret
以使用完整的API。
授权
为用户生成授权日历的链接
$redirect_uri = "http://yoursite.dev/oauth2/callback"; $cronofy = new Cronofy\Cronofy(["client_id" => "CRONOFY_CLIENT_ID"]); $params = [ 'redirect_uri' => $redirect_uri, 'scope' => ['read_account','list_calendars','read_events','create_event','delete_event'] ]; $auth = $cronofy->getAuthorizationURL($params);
重定向URI是您网站上处理OAuth 2.0回调并接收code
参数的页面。然后,您可以使用该代码检索一个OAuth令牌,以授权访问用户的Cronofy账户
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET" ]); $params = [ 'redirect_uri' => $redirect_uri, 'code' => $code ]; $result = $cronofy->requestToken($params); // Retrieve credentials value $accessToken = $cronofy->accessToken; $refreshToken = $cronofy->refreshToken; $expiresIn = $cronofy->expiresIn;
您应该保存响应的AccessToken
和RefreshToken
以供以后使用。
请注意,必须将完全相同的重定向URI传递给两种方法才能授权访问。
$result
对于成功的请求将是true
;否则,它将是一个错误代码。请参考我们的文档以了解可能的错误代码。
刷新访问令牌
刷新账户的访问令牌
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "grant_type" => "refresh_token", "refresh_token" => "YOUR_REFRESH_TOKEN" ]); $new_access_token = $cronofy->refreshToken();
列出日历
获取用户所有日历的列表
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $calendar = $cronofy->listCalendars();
读取事件
获取用户所有事件的列表
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $params = [ 'tzid' => 'Etc/UTC' ]; $events = $cronofy->readEvents($params); foreach($events->each() as $event){ // process event }
创建或更新事件
要创建或更新用户日历中的事件
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $params = [ 'calendar_id' => 'CalendarID', 'event_id' => 'event_test_12345679', 'summary' => 'test event 2', 'description' => 'some event data here', 'start' => '2015-12-07T09:00:00Z', 'end' => '2015-12-08T10:00:00Z' ]; $new_event = $cronofy->upsertEvent($params);
删除事件
要从用户的日历中删除事件
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $params = [ 'calendar_id' => 'CalendarID', 'event_id' => 'EventID' ]; $delete = $cronofy->deleteEvent($params);
删除外部事件
要从用户的日历中删除外部事件
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $params = [ 'calendar_id' => 'CalendarID', 'event_uid' => 'EventUID' ]; $delete = $cronofy->deleteExternalEvent($params);
提高权限
为了提高客户端对用户日历的权限
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $params = [ 'permissions' => [ [ 'calendar_id' => 'CalendarID_1', 'permission_level' => 'unrestricted' ], [ 'calendar_id' => 'CalendarID_2', 'permission_level' => 'unrestricted' ] ], 'redirect_uri' => 'http://yoursite.dev/elevate/callback' ]; $response = $cronofy->elevatedPermissions($params);
使用服务账户授权
使用服务账户授权用户账户
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $params = [ 'email' => $email, 'callback_url' => $callback_url, 'scope' => ['read_account','list_calendars','read_events','create_event','delete_event'] ]; $response = $cronofy->authorizeWithServiceAccount($params);
注意:您将需要使用服务账户访问令牌来执行此操作。
创建日历
为用户的账户配置文件创建日历
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $params = [ 'profile_id' => $account_profile_id, 'name' => $new_calendar_name ]; $response = $cronofy->createCalendar($params);
使用替代数据中心
使用替代数据中心
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken", "data_center" => "DataCenter" ]);
列出可用性规则
检索针对账户保存的所有可用性规则
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $response = $cronofy->listAvailabilityRules();
读取可用性规则
检索可用性规则
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); // The String that uniquely identifies the availability rule. $rule_id = "default"; $response = $cronofy->getAvailabilityRule($rule_id);
删除可用性规则
删除认证账户的可用性规则
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); // The String that uniquely identifies the availability rule. $rule_id = "default"; $response = $cronofy->deleteAvailabilityRule($rule_id);
创建或更新可用性规则
为认证账户创建或更新可用性规则
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); // The details of the event to create or update: $params = [ "availability_rule_id" => "default", "calendar_ids" => ["cal_123"], "tzid" => "America/Chicago", "weekly_periods" => [ [ "day" => "monday", "start_time" => "09:30", "end_time" => "12:30" ], [ "day" => "wednesday", "start_time" => "09:30", "end_time" => "12:30" ] ] ]; $response = $cronofy->createAvailabilityRule($params);
进行批量请求
通过[批量][(https://docs.cronofy.com/developers/api/batch/)端点发送多个请求作为操作批次。
$cronofy = new Cronofy\Cronofy([ "client_id" => "CRONOFY_CLIENT_ID", "client_secret" => "CRONOFY_CLIENT_SECRET", "access_token" => "AccessToken", "refresh_token" => "RefreshToken" ]); $eventData = [ 'calendar_id' => 'CalendarID', 'event_id' => 'myapp-event-001', 'summary' => 'Wyld Stallyns band practice', 'start' => date("Y-m-d", strtotime('tomorrow')) . "T15:30:00Z", 'end' => date("Y-m-d", strtotime('tomorrow')) . "T17:00:00Z", ]; $batch = Batch::create() ->upsertEvent($calendarId, $testEventData) ->deleteEvent($calendarId, $testEventId) try { $result = $cronofy->executeBatch($batch); foreach ($result->responses() as $response) { // $response->status(); // $response->headers(); // $response->data(); // $response->request(); } } catch (PartialBatchFailureException $exception) { $result = $exception->result(); foreach ($result->errors() as $response) { // $response->status(); // $response->headers(); // $response->data(); // $response->request(); } }
运行单元测试
make test
链接
迁移指南
v0.X.X
->v1.0.0
: 版本1.0.0
添加了命名空间并将公共方法名称标准化为驼峰命名法(而之前一些方法使用的是 camel_case)。在 v0.29.0 中,您会写成$cronofy = new Cronofy();
和$calendar = $cronofy->list_calendars();
,而对于 v1.0.0,您应该写成$cronofy = new Cronofy\Cronofy();
和$calendar = $cronofy->listCalendars();
。
我想的功能不在 SDK 中,我该如何获得它?
我们根据需求添加 SDK 功能,专注于 Cronofy API 的开发。
如果您愿意为端点或属性提供支持,我们非常欢迎接收您的 pull request!请创建一个提及您已添加的功能/API 端点的 PR,我们将在尽可能快的时间内进行审核。
如果您希望我们团队添加功能,请通过 support@cronofy.com 与我们联系。