快速入门:获取访问令牌并从 Electron 桌面应用调用 Microsoft Graph API

欢迎使用! 这可能不是你期望看到的页面。 在修复时,此链接应会将你转至正确的文章:

快速入门:从 Node.js 桌面应用中让用户登录并调用 Microsoft Graph

对于因此而造成的不便,我们深表歉意。感谢你的耐心等待,我们正在努力解决此问题。

在本快速入门中将下载并运行一个代码示例,该示例演示 Electron 桌面应用程序如何让用户登录并获取访问令牌来调用 Microsoft Graph API。

本快速入门通过使用 PKCE 的身份验证代码流使用适用于 Node.js 的 Microsoft 身份验证库 (MSAL Node)

先决条件

步骤 1:在 Azure 门户中配置应用程序

要使此快速入门的代码示例正常运行,需要将答复 URL 添加为 msal://redirect。

已配置 应用程序已使用这些属性进行配置。

步骤 2:下载 Electron 示例项目

注意

Enter_the_Supported_Account_Info_Here

步骤 4:运行应用程序

需要安装一次此示例的依赖项:

npm install

然后,通过命令提示符或控制台运行应用程序:

npm start

应该会看到应用程序的 UI,其中包含一个“登录”按钮。

关于代码

下面讨论了示例应用程序的一些重要方面。

MSAL Node

MSAL Node 是一个用于登录用户和请求令牌的库,此类令牌用于访问受 Microsoft 标识平台保护的 API。 若要详细了解如何搭配使用 MSAL Node 和桌面应用,请参阅本文

可通过运行以下 npm 命令安装 MSAL Node。

npm install @azure/msal-node --save

MSAL 初始化

可通过添加以下代码为 MSAL Node 添加引用:

const { PublicClientApplication } = require('@azure/msal-node');

然后,使用以下代码对 MSAL 进行初始化:

const MSAL_CONFIG = {
    auth: {
        clientId: "Enter_the_Application_Id_Here",
        authority: "https://login.partner.microsoftonline.cn/Enter_the_Tenant_Id_Here",
    },
};

const pca = new PublicClientApplication(MSAL_CONFIG);
其中: 说明
clientId 是在 Azure 门户中注册的应用程序的应用程序(客户端) ID。 可以在 Azure 门户的应用的“概览”页中找到此值。
authority 用户要进行身份验证的 STS 终结点。 对于公有云,通常为 https://login.partner.microsoftonline.cn/{tenant},其中 {tenant} 是租户名称或租户 ID。

请求令牌

可以使用 MSAL Node 的 acquireTokenInteractive 公共 API 通过外部用户代理(例如默认的系统浏览器)获取令牌。

const { shell } = require('electron');

try {
   const openBrowser = async (url) => {
       await shell.openExternal(url);
   };

   const authResponse = await pca.acquireTokenInteractive({
       scopes: ["User.Read"],
       openBrowser,
       successTemplate: '<h1>Successfully signed in!</h1> <p>You can close this window now.</p>',
       failureTemplate: '<h1>Oops! Something went wrong</h1> <p>Check the console for more information.</p>',
   });

   return authResponse;
} catch (error) {
   throw error;
}

后续步骤

若要详细了解如何通过 MSAL Node 进行 Electron 桌面应用开发,请参阅教程: