Office API getAccessTokenAsync结果从Graph产生InvalidAuthenticationToken响应

时间:2018-08-30 07:45:40

标签: microsoft-graph office-js office-js-helpers

一段时间以来,我一直在尝试解决此问题,我正在研究Outlook的Office-js插件,并试图通过我的插件访问Microsoft Graph数据。

但是我无法验证我从getAccessTokenAsync收到的令牌。 如果我尝试使用Office-JS-Helpers中的身份验证器,则可以访问,但是我更喜欢使用插件的内置功能。<​​/ p>

我要使用的代码是这样:

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返回的令牌吗?

哦,是的,我正在Office 2016环境下运行,其Outlook 2016版本1807内部版本10325.20118单击运行

1 个答案:

答案 0 :(得分:3)

Beds返回的令牌称为引导令牌,确实使您的加载项可以直接访问MS Graph。而是给Office宿主应用程序(在这种情况下为Outlook)访问到外接程序的Web应用程序。外接程序的Web应用程序然后使用该令牌来获取对Microsoft Graph的访问令牌。它通过使用“代表” OAuth流来实现。请参阅此节点上的详细文档:SSO in Office Add-ins,有关Outlook的特定指导,请参见Authenicate a user in an Outlook Add-in with an SSO token