可以使用MS Graph Bearer Token来访问Office REST API吗?

时间:2018-01-30 16:02:59

标签: microsoft-graph outlook-restapi

我们使用Microsoft Graph在.Net Core 2.0应用程序中实现身份验证,以针对Azure AD进行身份验证。

工作正常,我们的目标是使用Microsoft Graph访问Office 365数据。

不幸的是,经过深入审核,我们发现Tasks are currently unsupported via Microsoft Graph并且必须通过Outlook REST API进行访问。

  

重要:Microsoft Graph中的/ beta版本下的API处于预览状态,可能会发生变化。不支持在生产应用程序中使用这些API。

我尝试在Outlook REST API标头中传递通过Microsoft Graph检索到的Bearer Token但我收到了invalid token错误。

我希望我只是做错了,这是一种有效的方法。

由于MS Graph是Outlook REST API和其他人的“统一”替代品,因此可以使用Microsoft Graph令牌来访问Outlook REST API吗?

2 个答案:

答案 0 :(得分:3)

是的,这是正确的行为。代币仅对特定“受众”有效,该代理由代币内的aud声明表示。

如果您获得了Microsoft Graph API的令牌,则aud参数将设置为https://graph.microsoft.com。这与Office 365 API端点(https://outlook.office.comhttps://outlook.office365.com)不匹配,因此令牌验证失败。你有两个选择。

  1. 使用Graph中的任务API,即使它们处于测试阶段。
  2. 确保在请求Graph令牌时获得刷新令牌(通过在身份验证/令牌请求中包含offline_access范围)。然后使用该刷新令牌获取具有适当受众的第二个令牌。
  3. 您可以使用刷新令牌通过限定refresh request中的范围来请求与Office 365 API兼容的令牌。例如,如果您请求带有Tasks.Read的图表标记,则可以将刷新请求中的Tasks.Read限定为https://outlook.office.com/Tasks.Read

答案 1 :(得分:0)

只想分享使用邮递员将Graph RefreshToken交换到Outlook AccessToken的方法。 (您可以使用所需的任何代码语言来完成此操作)

首先让我们展示如何使用RefreshToken获取新的图形AccessToken:
enter image description here

然后使用图形刷新令牌获取新的Outlook AccessToken: enter image description here

希望这可能对其他人有所帮助:)