纯 JS 中的 Outlook SSO NAA,无需 Node.js

问题描述 投票:0回答:1

在专家中,

Windows 上的 Outlook 仅使用基于事件的加载项的清单中定义的运行时 JS 文件。如何在不使用node.js的情况下在此文件中导入并使用msal-browser?

我知道 Windows 上的 Outlook 不允许导入基于事件的文件,所以我想这都是关于捆绑的 - 但有没有比 npm/node.js 更简单、更直接的替代方案?或者甚至可能是一种根本不捆绑的方式?

我尝试使用导入功能,但 Outlook for Windows 上基于事件的加载项禁止使用该功能。

我在使用 fetch 和 eval() 方面也失败了,但我没有跟进这一点,因为在我看来,必须有一种更简单的方法来使用 msal-browser 进行 NAA 的 SSO。

javascript single-sign-on office-addins outlook-web-addins ms-office-addin
1个回答
0
投票

我使用 fetch 和 eval() 也失败了

Outlook for Desktop Classic(不是新版本)需要特殊的权限文件才能允许 CORS。 https://learn.microsoft.com/en-us/office/dev/add-ins/outlook/use-sso-in-event-based-activation我有一个待处理的文档PR,以使其更多明确该文件的去向。

基本上,在 Outlook 加载项项目中,您需要一个名为

.well-known
的文件夹,其中包含一个名为
microsoft-officeaddins-allowed.json
的文件,并且需要填充
required
数组,如链接示例中所示。 Outlook 经典桌面版将按惯例查看此文件。

我知道 Windows 上的 Outlook 不允许导入基于事件的文件,所以我想这都是关于捆绑的

是的,没错。我什至不会为这种环境手动编码,因为它太有限并且需要太多冗长的代码编写。最好用 TypesScript 编写它,并让 webpack 将其捆绑到 IE 11 标准。

在我的 webpack 中,我有一个定义如下的条目:

"smart-alerts/autorun-outlook-classic": [
    "core-js/stable",
    "regenerator-runtime/runtime",
    "./src/smart-alerts/autorun-outlook-classic.ts",
  ],

然后像这样定义规则

 {
      test: /\.(ts|js)$/,
      include: [path.resolve(__dirname, "src/smart-alerts")],
      use: {
        loader: "babel-loader",
        options: {
          presets: [
            [
              "@babel/preset-env",
              {
                targets: {
                  ie: "11",
                },
                useBuiltIns: "entry",
                corejs: "3",
              },
            ],
            "@babel/preset-typescript",
          ],
        },
      },
      exclude: /node_modules/,
    },

在我的 smart-alerts src 文件夹中使用这种方法,我有大量具有各种实用功能的 TypeScript 文件,我将它们导入到 autorun-outlook-classic.ts 文件中,webpack 负责抽象 async/await 关键字等。效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.