microsoft-graph-client 在 API 调用时抛出“#<GraphError>”错误

microsoft-graph-client throws '#<GraphError>' error on API call

我想从我的节点后端使用图表 API。首先,我通过调用 acquireTokenWithClientCredentials 方法从 adal-node 获取访问令牌。所以我的象征性回应是

我安装 @microsoft/microsoft-graph-client package and tried to follow the guide from here https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/samples/node/main.js . For the isomorphic-fetch import I installed the isomorphic-fetch 包。

async function bootstrap() {
  // ...
  const session: TokenResponse = await authenticationService.getSession(); // call the 'acquireTokenWithClientCredentials' function

  const client: Client = Client.init({
    authProvider: (done) => {
      done(null, session.accessToken);
    },
  });

  try {
    await client.api('/me').get();
  } catch (error) {
    throw error;
  }
}

API 调用抛出异常。但我不知道出了什么问题,因为错误只记录

(node:20561) UnhandledPromiseRejectionWarning: #<GraphError>

有什么错误或缺失?如果您需要更多信息,请告诉我。但我希望我的描述足以复制 :) 在此先感谢。


更新

该应用程序未以用户身份登录,应 运行 作为后台服务。所以也许我无法访问 /me 因为应用程序不是用户。但是当我将 /me 更新为 /users(这个端点应该可以工作)时,我仍然得到同样的错误。

所以我访问/users时的当前访问令牌是

您不能改用 Client credential flow to get access token for /me endpoint. You should use auth code flow(acquireTokenWithAuthorizationCode)。然后您可以为登录用户调用/me

如果您必须使用客户端凭据流,您应该为特定用户调用 /users/{id | userPrincipalName}

此外,如果你想调用Microsoft Graph API,你用来获取访问令牌的资源的值应该是https://graph.microsoft.com

var resource = 'https://graph.microsoft.com';