API Office 365 создать событие в формате календаря ошибка

Я использую Office 365 для публикации события в календаре пользователя. У меня проблема с форматом моего поста.

Вот мой код (с использованием Codeigniter и Rest lib):

    $config = array (
'server'            => 'https://outlook.office365.com/api/v1.0/me',
'http_user'         => '[email protected]',
'http_pass'         => 'mypassword',
'http_auth'         => 'basic',
);
$this->load->library('rest', $config);

$event = array(
'Subject' => 'Try to post :(',
'Body'    => array(
'ContentType' => 'HTML',
'Content'     => 'Not really concluant...'),
'Start'    => "2015-04-22T18:00:00Z",
'End'      => "2015-04-22T19:00:00Z",
'StartTimeZone'    => 'Europe Standard Time',
'EndTimeZone'  =>  'Europe Standard Time',
);

var_dump($this->rest->post('events', json_encode($event), 'json'));

И вот ответ:

Не удалось найти поддерживаемый тип MIME, соответствующий типу контента
ответа. Ни один из поддерживаемых типов
«Приложения / JSON; odata.metadata = минимальное

Что я делаю не так? Не говори все, пожалуйста!

0

Решение

Я не уверен, что «Стандартное европейское время» правильно. Пожалуйста, укажите часовой пояс из отображаемого списка Вот в столбце «Часовой пояс».

0

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

Вам нужно установить Content-Type заголовок к application/json, Я не уверен, как это сделать с этим конкретным API, но это звучит как ваша проблема.

0

Я искал такое же решение, а потом нашел:

Сначала вам нужен пользователь, у которого есть право «владельца» на календарь, который вы хотите создать.
(вы можете проверить с помощью учетной записи администратора)
Тогда вам нужно закодировать в base64 свой логин
Перейти на этот сайт, вы можете сделать это онлайн
http://www.tools4noobs.com/online_php_functions/base64_encode/

затем выберите запись «base64encode» внутри поля, как в этом примере:
[email protected]: пароль

Скопируйте результат: пример
am9obi5zbWl0aEBkb21haW4uY29tOnBhc3N3b3Jk

1 шаг: прочитать события (в php):

<?
$mail = "[email protected]"; // agenda email you want to check
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Authorization: Basic am9obi5zbWl0aEBkb21haW4uY29tOnBhc3N3b3Jk"// replace after basic by the password
)
);
$context = stream_context_create($opts);

$ret_event = file_get_contents("https://outlook.office365.com/api/v1.0/users/" . $mail . "/calendarview?startDateTime=2015-06-30T09:00:00Z&endDateTime=2015-06-30T18:00:00Z", false, $context);
echo "<pre>";
print_r(json_decode($ret_event));
echo "</pre>";
?>

2-й шаг: написать событие (в php):

<?
$mail = "[email protected]"; // agenda email you want ot add event
$url = "https://outlook.office365.com/api/v1.0/users/" . $mail . "/events";

$fuseau = date("P");
$titre = "Hello"; // Title
$description = "Welcome to our world"; // Content can be html
// Time zone is for France, check yours
// Change the date time for your event
$data_json = '{   "Subject": "' . $titre . '",
"Body": {
"ContentType": "HTML",
"Content": "' . $description . '"},
"Start": "2015-07-07T18:00:00' . $fuseau . '",
"StartTimeZone": "Romance Standard Time",
"End": "2015-07-07T19:00:00' . $fuseau . '",
"EndTimeZone": "Romance Standard Time",
"Attendees": [
{
"EmailAddress": {
"Address": "' . $mail . '",
"Name": "TEST"},
"Type": "Required"}
]
}';$options = array("http" => array(   "method" => "POST",
"header" => "Authorization: Basic am9obi5zbWl0aEBkb21haW4uY29tOnBhc3N3b3Jk\r\n" .
"Content-type: application/json\r\n",
"content" => $data_json
));
$context = stream_context_create($options);
$retour_create_event = file_get_contents($url, false, $context);
echo "<pre>";
print_r(json_decode($retour_create_event));
echo "</pre>";

$id = json_decode($retour_create_event)->Id;
echo "Id of the event : " . $id;
?>

Теперь проверьте свою повестку дня, у вас будет ваше мероприятие
Вы можете добавить много настроек, например, категории или другую информацию

Это работает также для электронной почты, Onenote и Sharepoint.

Ждем ваших отзывов

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