使用具有相同标记的 Microsoft Office365 (Outlook) API 和 Graph API

Use both Microsoft Office365 (Outlook) API and Graph API with the same token

我使用 Office365(Outlook)API 有一段时间了 (https://outlook.office.com)

现在我需要能够上传文件。我发现它只能通过使用其他服务来完成。 (e.x。Microsoft Graph)。

例如 https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/item_createuploadsession

问题是我目前的身份验证无法同时访问这两个服务:

现在我使用范围:

openid offline_access profile 
https://outlook.office.com/calendars.readwrite.shared

当我向其中添加 Files.ReadWrite.All 时,我将无法再访问 outlook 端点。我收到以下错误:

The audience claim value is invalid 'https://graph.microsoft.com'

有没有办法用同一个令牌调用这两个服务?也许有任何解决方法?

不,您不能使用相同的令牌。访问令牌通过观众声明限定在特定的 API 范围内。 Outlook API 拒绝您的令牌,因为令牌中的观众声明是为 Graph 设置的。

对您来说最简单的解决方案是将 Graph 用于与 Outlook 相关的内容。它们在支持方面非常接近(参见 https://docs.microsoft.com/en-us/outlook/rest/compare-graph-outlook)。

如果您正在使用的某些东西只能在 Outlook 端点上使用,那么您将需要使用单独的令牌。