将 Microsoft 身份验证库 MSAL 与 PnPjs 结合使用

时间:2021-05-13 13:44:52

标签: reactjs msal spfx

我一直在阅读 PnPjs 页面,我需要了解它的作用: https://pnp.github.io/pnpjs/authentication/msaljsclient/#calling-sharepoint-via-msal 好像是:

import { MsalClientSetup  } from "@pnp/msaljsclient";
import { sp } from "@pnp/sp/presets/all";

sp.setup({
    sp: {
        fetchClientFactory: MsalClientSetup({
            auth: {
                authority: "https://login.microsoftonline.com/mytentant.onmicrosoft.com/",
                clientId: "00000000-0000-0000-0000-000000000000",
                redirectUri: "https://mytentant.sharepoint.com/sites/dev/SitePages/test.aspx",
            },
        }, ["https://mytentant.sharepoint.com/.default"]),
    },
});

const r = await sp.web();

是否为 SharePoint 应用程序提供了一个包装器,以便进行模拟步骤,或者为应用程序创建者提供一个包装器以允许其他用户拥有提升的权限?如果不是(哦,我希望)那么它有什么作用?

1 个答案:

答案 0 :(得分:1)

您必须在设置中添加 baseUrl。

import { MsalClientSetup  } from "@pnp/msaljsclient";
import { sp } from "@pnp/sp/presets/all";

sp.setup({
    sp: {
        baseUrl: "https://{my tenant}.sharepoint.com/sites/dev/",
        fetchClientFactory: MsalClientSetup({
            auth: {
                authority: "https://login.microsoftonline.com/mytentant.onmicrosoft.com/",
            clientId: "00000000-0000-0000-0000-000000000000",
            redirectUri: "https://mytentant.sharepoint.com/sites/dev/SitePages/test.aspx",
             },
         }, ["https://mytentant.sharepoint.com/.default"]),
     },
});

const r = await sp.web();

添加 baseUrl 后,我们可以获得 SharePoint 数据,并且可以使用上述代码。