Graph API - получение событий, возвращающих внутреннюю ошибку сервера 500

Попытка использовать Graph API (через https://developer.microsoft.com/en-us/graph/graph-explorer/) для возврата событий из общего календаря с использованием следующей конечной точки:

https://graph.microsoft.com/v1.0/users/<user>/calendar/events

Когда <user> заменяется моим адресом электронной почты, события возвращаются, как и ожидалось, однако, если его заменяет коллега (который поделился со мной календарем), я получаю следующий ответ 500:

{
    "error": {
        "code": "ErrorInternalServerTransientError",
        "message": "An internal server error occurred. Try again later.",
        "innerError": {
            "request-id": "b26e5b81-56f0-40b6-bb7b-89c1508c4c77",
            "date": "2017-05-25T13:11:16"
        }
    }
}

Довольно новичок в Graph API, поэтому приветствуются любые рекомендации.

Изменить:

Просто попытался воспроизвести это с помощью локального сервера node.js, я последовал следующему примеру (каждый шаг работал нормально): https://docs.microsoft.com/en-us/outlook/rest/node-учебник

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

ERROR:{
   "statusCode":500,
   "code":"InternalServerError",
   "message":"Error while processing response.",
   "requestId":"65fa8d30-3bbf-498c-869f-f4bb89bec8d5",
   "date":"2017-05-25T19:13:07.000Z",
   "body":{
      "code":"InternalServerError",
      "message":"Error while processing response.",
      "innerError":{
         "request-id":"65fa8d30-3bbf-498c-869f-f4bb89bec8d5",
         "date":"2017-05-25T19:13:07"
      }
   }
}

person Oliver    schedule 25.05.2017    source источник
comment
Какие области у вашего токена доступа?   -  person Jason Johnston    schedule 25.05.2017
comment
@JasonJohnston Я обновил свой исходный пост, добавив некоторые дополнительные примечания. Есть предположения?   -  person Oliver    schedule 26.05.2017


Ответы (1)


Очевидно, есть две версии совместного использования календаря, которые я буду называть «старой» и «новой». Детали не важны, достаточно знать, что это детали реализации в клиентах Microsoft (Outlook, OWA и т. Д.). В вашем случае человек, который предоставил вам доступ к своему календарю, сделал это с помощью клиента, который использовал «старый» метод, а REST API не имеет доступа к календарям, совместно используемым с этим методом. Мы работаем над решением этой проблемы в API.

Между тем, если пользователь, который поделился своим календарем, может удалить общий доступ, а затем использовать Outlook в Интернете, Outlook на iOS или Outlook на Android для повторного обмена, это должно разблокировать вас. (С требованием, чтобы их почтовый ящик размещался в Office 365).

person Jason Johnston    schedule 26.05.2017
comment
Имеет смысл, они использовали «старый» метод, чтобы поделиться. Попробую это сейчас и доложу - person Oliver; 26.05.2017
comment
По-прежнему появляется то же сообщение об ошибке после удаления старых разрешений и повторного предоставления их через OWA - person Oliver; 26.05.2017
comment
Хорошо, позволь мне уточнить у команды. - person Jason Johnston; 26.05.2017
comment
Таким образом, с новой моделью совместного использования вы должны найти общие календари под конечной точкой /me/calendars, поэтому вам больше не нужно обращаться к ней как /users/<user-id>/calendars. Вы можете это попробовать? - person Jason Johnston; 30.05.2017
comment
Отлично, похоже, работает с /me/calendars/{id}/events. Изменения, похоже, еще не отражены в документации. Спасибо еще раз! - person Oliver; 30.05.2017
comment
Спасибо, что подняли этот вопрос, @Oliver. Переходное поведение теперь задокументировано в статье Известные источники. - person Angelgolfer-ms; 31.05.2017
comment
@JasonJohnston: Есть ли проблема с Uservoice или Github, отслеживающая обновление, из-за которой Outlook автоматически меняет общий доступ со «старого» на «новый»? - person RasmusW; 29.11.2017
comment
Но для новых конечных точек API, как я могу получить общий групповой календарь. Я пробовал то, что указано в документации Microsoft. Но / me / calendarGroups / this endpoints также не предоставляет мне все группы. - person Negi Rox; 31.05.2018