访问经过身份验证的用户的日历、邮件和联系人

Accessing Calendar, Mail and Contacts of an OAuthenticated user

我将 AzureAd 上的应用程序配置为多租户,我选择需要 Windows Azure Active Directory 和 Office 365 Exchange Online 的所有权限。

我可以让用户授予权限、获取访问令牌、刷新它们,OAuth 适合我。我总是使用 "common" 关键字而不是租户 ID,因为我的应用程序是多租户的。

现在,我想使用此令牌 (CRUD) 访问用户的邮件、联系人和日历。这是我的问题:我完全迷失在所有可能的 API 端点中。我应该使用:graph.windows.net、outlook.office365.com、graph.microsoft.com吗? This page 似乎暗示 graph.microsoft.com 是可以满足我的目的的瑞士军刀,但不知何故我找不到可以让我找到我正在寻找的信息的文档。另外,它似乎正在开发中,可能对我想要的来说太不完整了。

如果我对 outlook 进行查询。office365.com,我遇到了 401 错误。

如果我将我的访问令牌放在 this token analyzer 中,虽然范围字段只显示我在 AzureAd 门户中为 Windows Azure Active Directory 设置的权限,但它似乎没有问题,而不是 Office 365 Exchange Online .

我有点迷茫,欢迎任何帮助...

你有一个选择:

  1. 调用单独的服务 api - 你的问题是你获取了一个令牌来调用 AAD,然后尝试使用它来调用 Outlook - 你需要进行单独的调用来获取 outlook 的令牌。office365.com 通过 ADAL 或直接通过令牌端点。为 AAD Graph 获取的令牌只能用于 AAD Graph。同样,为 Outlook 获取的令牌只能用于 Outlook APIs.

澄清一下 - Azure AD OAuth 可以 protect/secure 多个 Web APIs,包括 O365 APIs、Azure AD Graph、Azure 资源管理 APIs,你自己的 API 和新的 O365 统一 API。在第一个访问令牌请求中,您指定 want/need 要调用的第一个资源。它不一定是 AAD Graph - 即它不是默认的 AFAIK。根据同意的内容,您可以使用(多资源)刷新令牌请求额外的访问令牌。 Vittorio 的博客 post,您 link 在您的评论中对此做了很好的解释。

  1. 统一调用 O365 API(处于预览状态)并记录在案。见下文。统一 API 的美妙之处在于,您只需获取一个令牌即可调用 graph.microsoft.com,并且该端点上的所有实体都可供您使用以及更多。它消除了#1 的孤立性质,以及获取和管理多个访问令牌以调用这些不同的 API 端点的要求。不过 #1 目前是 GA,统一的 API 目前只是预览。

有关 #2 的更多信息,请参阅 https://msdn.microsoft.com/en-us/office/office365/howto/office-365-unified-api-overview and search for "unified" in the list of samples here: https://msdn.microsoft.com/en-us/office/office365/howto/starter-projects-and-code-samples

我们正在努力改进统一的 API 文档。如果您要进行纯 REST 调用,那么我建议从 API explorer (and try things like https://graph.microsoft.com/beta/me/events and https://graph.microsoft.com/beta/me/messages to get your calendar events and mail messages), OR the API sandbox (which can show you JS code snippets, and allow you to test your own easily enough). As you can see on the REST examples, to access mail and calendar features in the unified APIs, you should be able to swap the service roots from Outlook to the unified API ie - https://outlook.office365.com/v1.0 -> https://graph.microsoft.com/beta 开始。关于 JS 示例 - 我们将在此处添加更多功能和其他示例。

注意:个人联系人在 outlook 中可用。office365.com 在统一 API 中尚不可用。

希望对您有所帮助