Office365 REST API。使用 ADAL 获取 401(未经授权)

Office365 REST API. Getting a 401 (Unauthorized) using ADAL

我正在尝试使用 ADAL 库访问 Office365 REST API,但收到 401(未授权),并且无法弄清楚原因。我已经在我们的 Azure AD 中注册了一个应用程序,获得了一个 ID,为它获取了一个密钥并授予它读取 Windows Azure Active Directory 的权限。

我可以获取 OAuth 令牌,但它无法与 Office365 一起使用 API。

这是我失败的尝试之一:

  AuthenticationContext auth = new AuthenticationContext("https://login.windows.net/" + myTenant);
  AuthenticationResult authenticationResult = auth.AcquireToken("http://Rest", new ClientCredential(myId, myKey));
  HttpClient client = new HttpClient();
  client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authenticationResult.AccessToken);
  HttpResponseMessage msg = await client.GetAsync("https://outlook.office365.com/api/v1.0/me/events");
  // => Bam. 401. :(

有什么想法吗?

您传递给 AcquireToken 的资源 ID 无效。那应该是"https://outlook.office365.com/"。看看是否有帮助。如果没有,请尝试解析您的令牌并查找问题:https://github.com/jasonjoh/office365-azure-guides/blob/master/ValidatingYourToken.md