4

我一直在尝试解决这个问题一段时间,我正在为 Outlook 开发 Office-js 插件,并试图通过我的插件访问 Microsoft Graph 数据。

但我无法验证从 getAccessTokenAsync 收到的令牌。如果我尝试使用 Office-JS-Helpers 的身份验证器,我可以获得访问权限,但我更愿意使用插件的内置功能。

我试图使用的代码是这样的:

Office.initialize = () => {
    var options = { forceAddAccount: true, forceConsent: true } as Office.AuthOptions;
    Office.context.auth.getAccessTokenAsync(options, getAccessTokenAsyncCallback);
}


function getAccessTokenAsyncCallback(accessTokenResponse) {
console.log(accessTokenResponse.value)   

client = MicrosoftGraph.Client.init({
    authProvider: (done) => {
        done(null, accessTokenResponse.value);
    },
    debugLogging: false
})
client.api("/me")
    .get((err, res, rawResponse) => {
        console.log(err)
        console.log("rawResponse")
        console.log(rawResponse)
    })
}

我的清单中的 WebApplicationInfo 是:

<WebApplicationInfo>
    <Id>{AppUID}</Id>
    <Resource>api://localhost:3000/{AppUID}</Resource>
    <Scopes>
      <Scope>profile</Scope>
      <Scope>user.read</Scope>
    </Scopes>
  </WebApplicationInfo>
</VersionOverrides>

并且权限已在我的应用程序注册门户上的应用程序中设置。

据我所见,在验证/解码我从 getAccessTokenAsync 收到的 JSON Web 令牌时,它应该是有效的。

但是每当我尝试使用此令牌进行连接时,我都会收到以下响应:

{
   "statusCode": 401,
  "code": "InvalidAuthenticationToken",
  "message": "Access token validation failure.",
  "requestId": "4a0ce952-0e90-XXXXXXXXX-db20c6cca94e",
  "date": "2018-08-30T05:37:43.000Z",
  "body": {
    "code": "InvalidAuthenticationToken",
    "message": "Access token validation failure.",
    "innerError": {
      "request-id": "4a0ce952-0e90-XXXXXXXXX-db20c6cca94e",
      "date": "2018-08-30T07:37:43"
    }
  }
}

我根本无法弄清楚这里的问题是什么,我错了,因为从 getAccessTokenAsync 返回的令牌是我需要的令牌吗?

哦,是的,我正在使用 Outlook 2016 版本 1807 build 10325.20118 运行 Office365 环境单击运行

4

1 回答 1

5

由 返回的令牌getAccessTokenAsync(称为引导令牌)不会您的加载项直接访问 MS Graph。相反,它为 Office 主机应用程序(在本例中为 Outlook)提供了对加载项的 Web 应用程序的访问权限。然后,加载项的 Web 应用程序使用该令牌来获取 Microsoft Graph 的访问令牌。它通过使用“代表”OAuth 流程来做到这一点。请参阅此节点上的大量文档:Office 加载项中的 SSO,有关 Outlook 特定指南,另请参阅使用 SSO 令牌在 Outlook 加载项中验证用户

于 2018-08-30T15:06:39.517 回答