代码之家  ›  专栏  ›  技术社区  ›  user310988

MS Graph承载令牌能否用于访问Office REST API?

  •  2
  • user310988  · 技术社区  · 7 年前

    我们在中实现了身份验证。Net Core 2.0应用程序使用Microsoft Graph对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检索到的承载令牌,但我得到一个 invalid token 错误

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

    由于MS Graph是Outlook REST API和其他API的“统一”替代品,能否使用Microsoft Graph令牌访问Outlook REST API?

    2 回复  |  直到 7 年前
        1
  •  4
  •   Jason Johnston    7 年前

    是的,这是正确的行为。令牌仅对特定的“受众”有效,这由 aud 在令牌内声明。

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

    1. 使用图中的任务API,即使它们是beta版。
    2. 确保在请求图形令牌时获得刷新令牌(通过包括 offline_access 身份验证/令牌请求中的范围)。然后使用该刷新令牌获得具有适当受众的第二个令牌。

    通过在中限定作用域,可以使用刷新令牌请求Office 365 API兼容令牌 refresh request . 例如,如果您使用 Tasks.Read ,您将有资格 任务。阅读 在刷新请求中作为 https://outlook.office.com/Tasks.Read .

        2
  •  1
  •   Kiksen    6 年前

    只想分享如何使用postman将Graph RefreshToken交换到Outlook AccessToken。(您可以使用任何希望使用的代码语言进行此操作)

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

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

    希望这可以帮助其他人:)