API REST для Office 365 с базовой авторизацией

Я пытаюсь получить как личный календарь, так и общий календарь в учетной записи Office 365 с помощью RESTapi. Поскольку в настоящее время Oauth2 не поддерживает доступ к общему календарю, я тестирую свой код с базовой авторизацией.

В моем аккаунте три календаря:

  1. [email protected] (собственный календарь)
  2. [email protected] (общий календарь)
  3. [email protected] (общий календарь)

Используя следующие конечные точки, я смог получать события с использованием базовой авторизации:

https://outlook.office365.com/ews/odata/Users ('user1 @ domain.com ') / События

Странная часть заключается в том, что последние два дня я не могу получать события для [email protected] и [email protected], используя одну и ту же конечную точку. Когда я пытаюсь получить доступ к событиям, я получаю следующую ошибку:

{"@ odata.context": "https://outlook.office365.com/ews/odata/$metadata#Users('[email protected]')/Events","value":[{"error":{"code":"ErrorInternalServerError","message":" Ссылка на объект не установлена ​​на экземпляр объекта. "}}

Но я все еще могу получить доступ к событиям для [email protected], используя ту же конечную точку и базовую аутентификацию.

Я также попытался получить доступ к собственному календарю с помощью oauth2. Я получаю аналогичную ошибку

{"значение": [{"ошибка": {"код": "ErrorInternalServerError", "сообщение": "Ссылка на объект не установлена ​​на экземпляр объекта."}}

Но я могу успешно разговаривать с конечной точкой календаря

Мне было интересно, видел ли кто-нибудь эту ошибку раньше. Любая помощь / предложения приветствуются.


person Naveen    schedule 14.09.2015    source источник


Ответы (3)


Использование обычной проверки подлинности не рекомендуется и не поддерживается для производственного использования. Базовая версия существует на данный момент, чтобы облегчить изучение API, но будет деактивирована в какой-то момент в будущем.

С учетом сказанного вы сказали, что получаете сообщение об ошибке при доступе к собственному календарю с помощью OAuth2, верно? Похоже, что это временная проблема, но на самом деле недостаточно информации, чтобы точно знать, что происходит. Если вы все еще видите это, было бы хорошо добавьте заголовки инструментов к своим запросам (User-Agent, client-request-id, return-client-request-id) и получите сетевую трассировку ответа на запрос.

person Jason Johnston    schedule 14.09.2015
comment
Привет, Джейсон, спасибо за ответ. Я попробую добавить больше заголовков, чтобы проверить ответ на запрос. Я использовал базовую аутентификацию только для проверки своего кода. - person Naveen; 14.09.2015

В дополнение к комментариям Джейсона используйте нашу рабочую конечную точку https://outlook.office.com/api/v1.0 вместо нашей старой конечной точки предварительной версии https://outlook.office365.com/ews/odata/ См. это сообщение в блоге для получения дополнительных сведений.

person Venkat Ayyadevara - MSFT    schedule 14.09.2015
comment
Привет Венкат, Спасибо за ответ. Я заменю его на производственный URL. У меня есть еще один вопрос - знаете ли вы, что доступ к общим календарям поддерживается с помощью Oauth2? Я не мог найти никакой информации об этом. - person Naveen; 14.09.2015
comment
Еще нет. Мы все еще работаем над добавлением поддержки, но пока нет ETA. - person Venkat Ayyadevara - MSFT; 15.09.2015

Это меня тоже смутило. Все в Интернете будет указывать вам на использование API Office 365, но поверьте мне, это не то, что вам нужно. Вы захотите использовать Exchange API. Office 365 - это просто сервер Exchange, поэтому вы можете автоматизировать его так же, как любой сервер Exchange. Здесь есть образец кода. Все очень просто.

Использовать REST API Office 365 без пользовательского интерфейса

Office 365 API - это просто набор инструментов для создания приложений на основе пользовательского интерфейса, которые позволяют пользователю вводить свои учетные данные Office 365 и позволяют приложению работать от его имени.

person Christian Findlay    schedule 01.09.2016