使用Office 365 REST API从共享日历中获取事件

时间:2018-08-10 09:57:29

标签: microsoft-graph office365api outlook-restapi

到目前为止,可以从用户加载共享日历。 但是,一旦您要加载事件,我们就会收到以下错误消息:

ErrorAccessDenied
Access is denied. Check credentials and try again.

URL看起来像这样:

https://outlook.office.com/api/v2.0/users/{userName}/calendars/{sharedCalendarId}/calendarView

查询:

{
  "query": {
    "$select": "Subject,Location,Start,End,IsAllDay,BodyPreview,Extensions",
    "$expand": "Extensions($filter=Id eq \"Microsoft.OutlookServices.OpenTypeExtension.custom.string.here\")",
    "startDateTime": "2018-07-09T22:00:00.000Z",
    "endDateTime": "2018-11-09T23:00:00.000Z"
  },
  "headers": {
    "Prefer": [
      "odata.track-changes",
      "odata.maxpagesize=200"
    ]
  }
}

设置了以下范围:

"openid",
"profiles",
"offline_access", // for refresh token
"https://outlook.office.com/calendars.readwrite",
"https://outlook.office.com/calendars.read.shared",
"https://outlook.office.com/calendars.readwrite.shared"

1 个答案:

答案 0 :(得分:1)

Outlook REST API请求始终代表当前用户(已认证用户)执行。这就是端点/me/calendars有效但users/{userId}/calendars不起作用的原因。您无法使用此API访问其他用户的日历。 here提供了更多信息。

要访问其他用户的日历,您应该切换到Microsoft Graph API。然后,您可以使用以下端点:

使用https://graph.microsoft.com/v1.0/

GET /me/calendar/calendarView
GET /users/{id | userPrincipalName}/calendar/calendarView
GET /groups/{id}/calendar/calendarView

记住要指定permissions来访问用户的日历。