График Microsoft. Как добавить событие в календарь других пользователей в Office 365 с помощью 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

Что еще мне нужно сделать, чтобы отправлять элементы в календарь других пользователей?

1

Решение

Вы пропуская разрешения действовать в календаре другого пользователя. У вас есть несколько способов сделать это:

  1. Вы можете отправить приглашение на встречу пользователю. Это будет работать для большинства пользователей, так как по умолчанию поведение приглашения на собрания автоматически добавляется в календарь пользователя. Просто создайте встречу с целевым пользователем в качестве посетителя.
  2. Поскольку у вас есть Calendar.ReadWrite.Shared, целевой пользователь должен поделиться с вами своим календарем.
  3. Имейте права доступа приложения для Calendar.ReadWrite.

Выбор наиболее подходящего зависит от требований, от того, как структурировано приложение, и от того, кто является действующим лицом, вносящим изменения.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]