Microsoft Graph Delta Query

У меня проблема с синхронизацией событий из календаря outlook.live.com с использованием библиотеки php для Microsoft Graph.

Когда я делаю запрос дельты для добавления новых событий в календарь Outlook, вместо того, чтобы возвращать новые события, я получаю удаленные события.

Мой запрос:

/beta/users/{userId}/calendars/{CalendarId}=/calendarView/delta?$deltatoken={deltatoken}

Ответ я получил:

array(3) { ["@odata.context"]=> string(60) "https://graph.microsoft.com/beta/$metadata#Collection(event)" ["@odata.deltaLink"]=> string(523) "https://graph.microsoft.com/beta/users/{userid}/calendars/{Calendarid}/calendarView/delta?$deltatoken=VLoBDbMAW0qt42orhN1P_K-qpJgWEpyLQD3OQNZD4Oq1X-2qdILwT6qcenOJ4pg1SIrCY2XWWOEWX909SipAXkdT1f5_HvmIeOV401E2_SRuq37btKNElPw5OcmQh0yE1XvjPNL78Lpmnlg17dJAxyYY-sHWwF9-E0R1DkDtQM27Oc3cpEf7wrstQciCfYJRzRmVgaefdO4fNrsIXEQYIJ5Ui88_-IZA5WtiNffpWME.s-FenjlawGT-DdS6Bzo3MAhc9v1Na9bN8l3Y7YSC9xk" ["value"]=> array(1) { [0]=> array(3) { ["@odata.type"]=> string(22) "#microsoft.graph.event" ["id"]=> string(140) "AQMkADAwATNiZmYAZC1jNGI4LTlkNjctMDACLTAwCgBGAAADufkn5zrCbEu9_NPar0cGNQcAHVeViMrRMU6xEww1vqDblAAAANeIC7oAAAAdV5WIytExTrETDDW_oNuUAAECoeU1AAAA" ["@removed"]=> array(1) { ["reason"]=> string(7) "deleted" } } } }

Мой код выглядит так:

$pdo=new PDO("mysql:host=10.0.2.200;port=3306;dbname=$db", {your username},{your password},array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
$query="SELECT * FROM sync_data WHERE id=$id";
$stmt=$pdo->prepare($query);
$stmt->execute();
while($val= $stmt->fetch(PDO::FETCH_ASSOC)){
if ($val["syncTo"]=='Outlook'){
$accessToken=new Token\AccessToken(json_decode($val["accessToken"],true));
$deltaLink=$val["syncToken"];
$calendarId=$val["calendarId"];
}
}
$graph=new Microsoft\Graph\Graph();
$graph->setAccessToken($accessToken);
$response = $graph->createRequest("GET", $deltaLink)
->addHeaders(array ("Prefer"=>"outlook.body-content-type='text'"))
->execute();
$response=$response->getBody();
var_dump($response);

Я обнаружил, что идентификатор, предоставленный в ответе об удаленном событии, на самом деле является идентификатором созданного события, и О способен обработать детали события с помощью запроса get, подобного этому:

$url = "/me/calendars/$calendarid/events/AQMkADAwATNiZmYAZC1jNGI4LTlkNjctMDACLTAwCgBGAAADufkn5zrCbEu9_NPar0cGNQcAHVeViMrRMU6xEww1vqDblAAAANeIC7oAAAAdV5WIytExTrETDDW_oNuUAAECoeU1AAAA";
$response = $graph->createRequest("GET", $url)
->addHeaders(array ("Prefer"=>"outlook.body-content-type='text'"))
->execute();
$response=$response->getBody();

1

Решение

Задача ещё не решена.

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

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

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