Я пишу приложение на PHP с использованием API-интерфейса REST Office 365, которое выводит список всех событий для комнаты собраний. Я авторизовал приложение и могу получить список событий комнаты, перейдя по URL через мой браузер, однако, как только я пытаюсь сделать запрос через CURL, я получаю следующий ответ.
{"error":{"code":"ErrorAccessDenied","message":"Access is denied. Check credentials and try again."}}
Мой PHP выглядит следующим образом
public function getCalendarEvents($token, $calendar) {
$url = "https://outlook.office365.com/api/v1.0/users/$calendar/events";
//$url = "https://outlook.office365.com/api/v1.0/me/events";
$headers = array('Authorization: Bearer ' . $token, 'Content-Type: application/json', 'Accept:application/json');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$output=curl_exec($ch);
$info = curl_getinfo($ch);
//print_r($info['request_header']);
curl_close($ch);
print_r($output);
}
Я попытался передать адрес электронной почты комнаты, так как
$url = "https://outlook.office365.com/api/v1.0/users/[email protected]/events";
а также
$url = "https://outlook.office365.com/api/v1.0/Users('[email protected]')/Events";
Ни одна из которых не работает. Я могу отозвать все события календаря для себя, используя
$url = "https://outlook.office365.com/api/v1.0/me/events";
Я являюсь администратором портала Office 365, а также имею полные права доступа к комнате. В своем исследовании я наткнулся этот Так что ответьте, но снятие отметки с этой опции в Azure не имеет значения.
Похоже, об очень похожей проблеме Вот
Сегодня мы не поддерживаем аутентифицированного пользователя, который получает доступ к почте, календарю или контактам другого пользователя с помощью OAuth. Вот почему ваш запрос не выполняется, когда вы получаете календарь конференц-зала, но работаете для своего собственного календаря. Этот запрос работает с использованием браузера, поскольку вы используете обычную аутентификацию, и мы не рекомендуем это для вашего приложения. Если вы хотите попробовать запросы с помощью OAuth, вы можете сделать это с помощью нашего Песочница OAuth.
Хорошей новостью является то, что мы очень близки к тому, чтобы выпустить поддержку потока учетных данных клиента OAuth, который позволит приложению с согласия администратора клиента получить доступ к любому почтовому ящику в клиенте. Поскольку вы являетесь администратором арендатора, как только мы выпустим эту функцию, вы сможете авторизовать приложение для доступа к календарям конференц-залов вашего арендатора. Так что, пожалуйста, следите за новостями в ближайшие недели.
[ОБНОВИТЬ]: Поддержка сервисных учетных записей теперь доступна. Пожалуйста, смотрите наш объявление в блоге для более подробной информации и дайте нам знать, если у вас есть какие-либо вопросы.
Вы должны отправить свой секретный код.
И если попытка вашей программы много раз может блокироваться как спамер.
Проверьте это:
http://support2.microsoft.com/kb/2630976
Чтобы решить эту проблему, сбросьте пароль пользователя. Для этого выполните следующие действия:
Откройте веб-браузер, перейдите на портал Office 365 (https://portal.office.com), а затем войдите в систему, используя учетные данные, срок действия которых истек.
При появлении запроса введите новый пароль Office 365 для пользователя. Убедитесь, что пароль соответствует критериям для Office 365.