Я использую 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 = минимальное
Что я делаю не так? Не говори все, пожалуйста!
Я не уверен, что «Стандартное европейское время» правильно. Пожалуйста, укажите часовой пояс из отображаемого списка Вот в столбце «Часовой пояс».
Вам нужно установить Content-Type
заголовок к application/json
, Я не уверен, как это сделать с этим конкретным API, но это звучит как ваша проблема.
Я искал такое же решение, а потом нашел:
Сначала вам нужен пользователь, у которого есть право «владельца» на календарь, который вы хотите создать.
(вы можете проверить с помощью учетной записи администратора)
Тогда вам нужно закодировать в 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.
Ждем ваших отзывов