クイックスタート: Electron デスクトップ アプリケーションからアクセス トークンを取得して Microsoft Graph API を呼び出す

ようこそ。 ご要望のページを表示できません。 問題の修正に取り組んでいますが、次のリンクから目的の記事にアクセスできるかお試しください。

クイック スタート: Node.js デスクトップ アプリでユーザーのサインインと Microsoft Graph の呼び出しを行う

ご不便をおかけして申し訳ありませんが、問題が解決するまで今しばらくお待ちください。

このクイックスタートでは、Electron デスクトップ アプリケーションでユーザーのサインイン処理を行い、アクセス トークンを取得して Microsoft Graph API を呼び出す方法を示すコード サンプルをダウンロードして実行します。

このクイックスタートでは、PKCE を使用した認可コード フローで Node.js 用 Microsoft Authentication Library (MSAL Node) を使用します。

前提条件

手順 1: Azure portal でのアプリケーションの構成

このクイックスタートのサンプル コードを動作させるには、応答 URL として msal://redirect を追加する必要があります。

Already configuredアプリケーションはこれらの属性で構成されています。

手順 2: Electron サンプル プロジェクトのダウンロード

注意

Enter_the_Supported_Account_Info_Here

手順 4:アプリケーションの実行

このサンプルの依存関係を 1 回インストールする必要があります。

npm install

次に、コマンド プロンプトまたはコンソールを使用して、アプリケーションを実行します。

npm start

[ サインイン ] ボタンを備えたアプリケーションの UI が表示されます。

コードについて

以降、サンプル アプリケーションのいくつかの重要な要素について説明します。

MSAL Node

MSAL Node はユーザーのサインインを処理し、Microsoft ID プラットフォームによって保護されている API にアクセスするトークンを要求するために使用するライブラリです。 デスクトップ アプリケーションでの MSAL Node の使用方法の詳細については、この記事を参照してください。

MSAL Node は、次の npm コマンドを実行してインストールできます。

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.microsoftonline.com/Enter_the_Tenant_Id_Here",
    },
};

const pca = new PublicClientApplication(MSAL_CONFIG);
各値の説明: 説明
clientId Azure portal に登録されているアプリケーションの "アプリケーション (クライアント) ID"。 この値は、Azure portal のアプリの [概要] ページで確認できます。
authority ユーザーが認証するための STS エンドポイント。 通常、パブリック クラウド上では https://login.microsoftonline.com/{tenant} です。{tenant} はご自分のテナントの名前またはテナント ID です。

トークンの要求

MSAL ノードの 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 デスクトップ アプリケーション開発については、次のチュートリアルを参照してください。