Azure AD应用程序注册 - Exchange API - 读取日历

时间:2017-11-13 20:14:45

标签: microsoft-graph outlook-restapi

我在Azure AD App中授予了以下权限:

应用:

Read calendars in all mailboxes
Read and write calendars in all mailboxes
Read calendars in all mailboxes

委派:

Read user and shared calendars
Read and write user and shared calendars
Read and write user calendars
Read user calendars
Read and write user and shared calendars
Read user and shared calendars

Registration Screen Shot

我正在成功生成如下所示的访问令牌:

const string clientId = "my-client-id";
const string clientSecret = "my-secret"; // C
var tenant = "mytenant.onmicrosoft.com";

var authContext = new AuthenticationContext($"https://login.windows.net/{tenant}/oauth2/token");
var credentials = new ClientCredential(clientId, clientSecret);

AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", credentials);

使用该访问令牌,我正在尝试向/CalendarView传递承载令牌标头的基本请求:

https://outlook.office.com/api/v2.0/users/my@email.com/calendarview?startDateTime=2017-11-12&endDateTime=2017-11-13

但是,我一直在接收Access Denied。我需要设置其他权限吗?我打电话到正确的终点吗?

2 个答案:

答案 0 :(得分:1)

您没有包含错误响应的正文,但我的猜测是您正在点击此错误,因为Exchange不会接受使用共享密钥生成的令牌。相反,您需要使用基于证书的断言来请求令牌。 Azure将此文档记录为“第二种情况:使用证书访问令牌请求”here

答案 1 :(得分:1)

我实际上能够弄清楚这一点。我只是在Graph API中应用了权限,而不是使用Exchange API。

点击以下终点:

https://graph.microsoft.com/v1.0/users/{email}/calendarview?startDateTime={startDate}&endDateTime={endDate}

使用哪种API之间的差异并不是很明显......但我现在正在向前迈进。