如何在 node.js 应用程序中使用 pnp-js 从共享点获取数据?

How to use pnp-js at a node.js application to fetch data from sharepoint?

我有一个 node.js 应用程序,我正在尝试使用 PnPjs 的 AdalFetchClient 从共享点获取一些数据。

sp.setup({
  sp: {
    baseUrl: "https://placeholder.sharepoint.com",
    fetchClientFactory: () => {
      return new AdalFetchClient("tenantId", "azure_clientId", "azure_clientSecret");
    },
  },
});

await sp.web.getAppCatalog().get();

我得到这个错误:Error making HttpClient request in queryable [401] Unauthorized ::> {"error_description":"Invalid issuer or signature."}

我像这样设置我的 azure 活动目录应用程序的权限: Azure App permissions

我已将所有权限授予要从中获取数据的租户: Granted permissions to Azure App

我用的例子在这里:https://pnp.github.io/pnpjs/nodejs/adal-fetch-client/ 我还尝试将 AdalFetchClient 与 graph.. 一起使用,它正在工作。只有共享点 api 似乎有问题。

我找到了解决办法。有一个 AdalCertificateFetchClient 需要以下参数:

  • Tenant-ID
  • Azure 应用客户端 ID
  • 您的 x.509 证书的指纹
  • 您的 x.509 证书的私钥
  • 您要连接的共享点的根 url

所以首先你必须创建一个 x.509 证书。为此,我使用了 this tutorial。 (谢谢)

之后,您必须通过将证书安装到本地计算机并遵循 this steps

来获取指纹

最后一步是获取证书的私钥。为此,您必须为 windows 安装 openssl 并遵循 this steps

现在您可以使用 AdalCertificateFetchClient