如何使用 PHP 将事件添加到 Office 365 中的其他用户日历?
How do I add an event to another users calendar in Office 365 using PHP?
我正在使用 Microsoft Graph,并希望通过我们正在编写的应用程序让用户能够将项目添加到其他用户的日历中。
我正在使用下面的代码,可以添加到我自己的日历中。
$subject = 'Subject';
$body = 'Body content';
$start = time();
$end = time() + (30 * 60);
$startStr = date('Y-m-d', $start) . 'T' . date('H:i:s', $start) . ".0000000";
$endStr = date('Y-m-d', $end) . 'T' . date('H:i:s', $end) . ".0000000";
$data = array();
$data['subject'] = $subject;
$data['body'] = array();
$data['body']['content'] = $body;
$data['start'] = array();
$data['start']['dateTime'] = $startStr;
$data['start']['timeZone'] = 'UTC';
$data['end'] = array();
$data['end']['dateTime'] = $endStr;
$data['end']['timeZone'] = 'UTC';
echo 'subject: ' . $subject . '<br>';
echo 'body: ' . $body . '<br>';
echo 'start: ' . $startStr . '<br>';
echo 'end: ' . $endStr . '<br>';
$token = $_SESSION['access_token'];
$graph = new Graph();
$graph->setAccessToken($token);
$request = $graph->createRequest("post", '/me/calendar');
$request->attachBody($data);
$response = $request->execute();
当我将 createRequest 更改为
$request = $graph->createRequest("post", '/xxxx/calendar');
其中 xxxx 是另一个用户名,我收到以下响应
400 Bad Request
我用来登录的权限是
profile openid email User.Read Calendars.ReadWrite Calendars.Read Calendars.Read.Shared Calendars.ReadWrite Calendars.ReadWrite.Shared
我还需要做什么才能将项目发送到其他用户日历?
您missing the permissions可以在其他用户的日历上进行操作。您有几种方法可以做到这一点:
- 您可以向用户发送会议邀请。这适用于大多数用户,因为默认行为是将会议邀请自动添加到用户的日历中。只需创建一个目标用户作为与会者的会议。
- 由于您有 Calendar.ReadWrite.Shared,目标用户需要与您共享他们的日历。
- 为 Calendar.ReadWrite 设置应用程序权限。
选择哪个最合适取决于要求、应用程序的结构以及进行更改的参与者是谁。
我正在使用 Microsoft Graph,并希望通过我们正在编写的应用程序让用户能够将项目添加到其他用户的日历中。
我正在使用下面的代码,可以添加到我自己的日历中。
$subject = 'Subject';
$body = 'Body content';
$start = time();
$end = time() + (30 * 60);
$startStr = date('Y-m-d', $start) . 'T' . date('H:i:s', $start) . ".0000000";
$endStr = date('Y-m-d', $end) . 'T' . date('H:i:s', $end) . ".0000000";
$data = array();
$data['subject'] = $subject;
$data['body'] = array();
$data['body']['content'] = $body;
$data['start'] = array();
$data['start']['dateTime'] = $startStr;
$data['start']['timeZone'] = 'UTC';
$data['end'] = array();
$data['end']['dateTime'] = $endStr;
$data['end']['timeZone'] = 'UTC';
echo 'subject: ' . $subject . '<br>';
echo 'body: ' . $body . '<br>';
echo 'start: ' . $startStr . '<br>';
echo 'end: ' . $endStr . '<br>';
$token = $_SESSION['access_token'];
$graph = new Graph();
$graph->setAccessToken($token);
$request = $graph->createRequest("post", '/me/calendar');
$request->attachBody($data);
$response = $request->execute();
当我将 createRequest 更改为
$request = $graph->createRequest("post", '/xxxx/calendar');
其中 xxxx 是另一个用户名,我收到以下响应
400 Bad Request
我用来登录的权限是
profile openid email User.Read Calendars.ReadWrite Calendars.Read Calendars.Read.Shared Calendars.ReadWrite Calendars.ReadWrite.Shared
我还需要做什么才能将项目发送到其他用户日历?
您missing the permissions可以在其他用户的日历上进行操作。您有几种方法可以做到这一点:
- 您可以向用户发送会议邀请。这适用于大多数用户,因为默认行为是将会议邀请自动添加到用户的日历中。只需创建一个目标用户作为与会者的会议。
- 由于您有 Calendar.ReadWrite.Shared,目标用户需要与您共享他们的日历。
- 为 Calendar.ReadWrite 设置应用程序权限。
选择哪个最合适取决于要求、应用程序的结构以及进行更改的参与者是谁。