Skip to main content
The Trailblazer Community will undergo maintenance on Saturday, November 15, 2025 and Sunday, November 16, 2025. Please plan your activities accordingly.

外部クライアントアプリケーションを作成する

メモ

メモ

日本語で受講されている方へ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻訳を参照しながら進めていってください。Challenge での評価は英語データを対象に行われるため、英語の値のみをコピーして貼り付けるようにしてください。日本語の組織で Challenge が不合格だった場合は、(1) この手順に従って [Locale (地域)] を [United States (米国)] に切り替え、(2) [Language (言語)] を [English (英語)] に切り替えてから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしてみることをお勧めします。

翻訳版 Trailhead を活用する方法の詳細は、自分の言語の Trailhead バッジを参照してください。

SFDX プロジェクトを作成する

環境が設定できたので、次は外部クライアントアプリケーションを作成します。そのためには、SFDX プロジェクトが必要です。

  1. コンピューター上のアプリケーションを作成する場所に ECA Metadata (ECA メタデータ) という名前のフォルダーを作成します。
  2. VS Code でこのフォルダーを開きます。
  3. VS Code の [Terminal (ターミナル)] を開いて、作成したフォルダーを表示します。
  4. [Terminal (ターミナル)] で次のコマンドを実行して、標準テンプレートを使って ecaViaMetadata という名前の Salesforce DX プロジェクトを作成します。
sf project generate --name ecaViaMetadata --template standard

Dev Hub 組織を承認する

接続アプリケーションを使って、コンピューター上の SFDX プロジェクトを Trailhead Playground Dev Hub に接続します。このステップではドメインが必要になります。[Setup (設定)] でドメインを検索するには、[Quick Find (クイック検索)] ボックスに My Domain (私のドメイン) と入力し、[My Domain (私のドメイン)] をクリックします。

  1. VS Code で、SFDX プロジェクトの ECA Metadata フォルダーを開きます。
  2. VS Code の [Terminal (ターミナル)] で次のコマンドを実行します。このとき、実行前に <my domain> を組織のドメインに置き換えてください。
sf org login web --set-default-dev-hub --alias ecaViaMetadata --instance-url https://<my domain>
  1. Web ベージが開いたら、Trailhead Playground のログイン情報でログインします。
  2. 組織へのアクセスを許可します。

外部クライアントアプリケーション用 SFDX プロジェクトを設定する

  1. VS Code で sfdx-project.json ファイルを開きます。
  2. ドメインの sfdcLoginUrl パラメーターを更新します。

[Setup (設定)] でドメインを検索するには、[Quick Find (クイック検索)] ボックスに My Domain (私のドメイン) と入力し、[My Domain (私のドメイン)] をクリックします。

  1. config という名前のディレクトリを展開し、スクラッチ組織定義ファイルを開きます。定義ファイルの名前は project-scratch-def.json です。機能設定に ExternalClientAppsExtlClntAppSecretExposeCtl を追加します。
	  "features": ["EnableSetPasswordInApi", "ExternalClientApps", "ExtlClntAppSecretExposeCtl"],

  1. プロジェクトディレクトリ内に package.xml マニフェストファイルを作成します。
  2. 次の内容を package.xml ファイルに追加します。
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>ExternalClientApplication</name>
    </types>
    <version>61.0</version>
</Package>
  1. force-app/main/default ディレクトリ内に externalClientApps という名前のフォルダーを作成します。
  2. externalClientApps フォルダーに ecaViaMetadata.eca-meta.xml という名前のファイルを追加します。これが外部クライアントアプリケーションのヘッダーファイルになります。

  1. 次の内容をヘッダーファイルに追加します。
<?xml version="1.0" encoding="UTF-8"?>
<ExternalClientApplication xmlns="http://soap.sforce.com/2006/04/metadata">
    <contactEmail>eca_metadata@example.com</contactEmail>
    <description>External client app Metadata API creation</description>
    <distributionState>Local</distributionState>
    <isProtected>false</isProtected>
    <label>ecaViaMetadata</label>
</ExternalClientApplication>

厳密には、以上で外部クライアントアプリケーションは完成です。このままこの設定をリリースすることもできます。その場合、Playground の外部クライアントアプリケーションマネージャーに基本の外部クライアントアプリケーションとして表示されます。ただし、有用なアプリケーションを作るには、プラグインが必要です。最初のモジュールで作成したものと同様の OAuth プラグインを設定しましょう。OAuth 2.0 Web サーバーフロー向けの OAuth プラグインを設定するには、いくつかの修正とファイルの新規作成が必要です。

OAuth プラグインを有効化して設定する

あらゆる設定が 1 つのファイルにまとめられた接続アプリケーションとは異なり、外部クライアントアプリケーションには、2 つの設定ファイルと 1 つのポリシーファイルが含まれます。グローバル OAuth 設定ファイルには、保護する必要がある OAuth コンシューマー鍵やコンシューマーの秘密などの機密項目が含まれます。OAuth 設定ファイルには、外部クライアントアプリケーションのより機密性が低い設定がすべて含まれます。Web サーバーフロー向けに外部クライアントアプリケーションを設定するにあたり、ポリシーファイルを作成する必要はありません。ポリシーは設定ファイルに基づいて設定されるためです。外部クライアントアプリケーションのリリース時に、OAuth ポリシーファイルが生成されます。

グローバル OAuth 設定ファイルを作成する

  1. force-app/main/default ディレクトリ内に extlClntAppGlobalOauthSets という名前のフォルダーを作成します。
  2. extlClntAppGlobalOauthSets フォルダーに ecaViaMetadataGlblOAuth.ecaGlblOauth-meta.xml という名前のファイルを追加します。

  1. VS Code で ecaViaMetadataGlblOAuth.ecaGlblOauth-meta.xml を開き、次の内容を追加します。
<?xml version="1.0" encoding="UTF-8"?>
<ExtlClntAppGlobalOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata">
    <callbackUrl>https://openidconnect.herokuapp.com/callback</callbackUrl>
    <externalClientApplication>ecaViaMetadata</externalClientApplication>
    <isConsumerSecretOptional>false</isConsumerSecretOptional>
    <isIntrospectAllTokens>false</isIntrospectAllTokens>
    <isPkceRequired>false</isPkceRequired>
    <isSecretRequiredForRefreshToken>true</isSecretRequiredForRefreshToken>
    <label>ecaViaMetadataglobalset</label>
    <shouldRotateConsumerKey>false</shouldRotateConsumerKey>
    <shouldRotateConsumerSecret>false</shouldRotateConsumerSecret>
</ExtlClntAppGlobalOauthSettings>
  1. グローバル OAuth 設定ファイルを保存します。

OAuth 設定ファイルを作成する

  1. force-app/main/default ディレクトリ内に extlClntAppOauthSettings という名前のフォルダーを作成します。
  2. extlClntAppOauthSettings フォルダーに ecaViaMetadataSettings.ecaOauth-meta.xml という名前のファイルを追加します。

  1. VS Code で ecaViaMetadataSettings.ecaOauth-meta.xml を開き、次の内容を追加します。
<?xml version="1.0" encoding="UTF-8"?>
<ExtlClntAppOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata">
    <commaSeparatedOauthScopes>Api, Web, OpenID</commaSeparatedOauthScopes>
   <externalClientApplication>ecaViaMetadata</externalClientApplication>
    <label>ECA via Metadata Oauth Settings</label>
</ExtlClntAppOauthSettings>
  1. OAuth 設定ファイルを保存します。

ヘッダーファイルで設定ファイルを参照する

2 つの設定ファイルの作成が完了したので、続いてこれらのファイルを外部クライアントアプリケーションに組み込む必要があります。ヘッダーファイルは、外部クライアントアプリケーションを構成するすべてのファイルのリストです。

  1. package.xml マニフェストファイルを開きます。
  2. 3 つの OAuth ファイルそれぞれにエントリを追加します。
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>ExternalClientApplication</name>
    </types>
    <types>
        <members>*</members>
        <name>ExtlClntAppOauthSettings</name>
    </types>
    <types>
        <members>*</members>
        <name>ExtlClntAppGlobalOauthSettings</name>
    </types>
    <types>
        <members>*</members>
        <name>ExtlClntAppOauthConfigurablePolicies</name>
    </types>
    <version>61.0</version>
</Package>
  1. package.xml マニフェストファイルを保存します。

外部クライアントアプリケーションをリリースする

これで外部クライアントアプリケーションが適切に設定されたので、続いてアプリケーションをリリースします。アプリケーションをリリースするとポリシーファイルが作成されるので、リリース後に外部クライアントアプリケーションを取得して、生成されたファイルを SFDX プロジェクトに取り込みます。

  1. 次のコマンドを実行して、外部クライアントアプリケーションをリリースします。このとき <username> を Dev Hub 承認時のログインに使用したユーザー名に置き換えます。
sf project deploy start --manifest package.xml --target-org <Username>
  1. Trailhead Playground から外部クライアントアプリケーションを取得します。このとき <username> を Dev Hub 承認時のログインに使用したユーザー名に置き換えます。
sf project retrieve start --manifest package.xml --target-org <username>

アプリケーションを検証する

外部クライアントアプリケーションが正常にリリースされてから、このアプリケーションを取得すると、SFDX プロジェクトにそれまではなかったポリシーファイルが表示されます。

また、外部クライアントアプリケーションマネージャーを開くと、ecaViaMetadata という名前の新規外部クライアントアプリケーションが表示されます。興味がある方は、[My Domain (私のドメイン)] と OAuth コンシューマー鍵および秘密を取得して、それをすべて OpenID Connect Playground に接続することで、一連の OAuth Web サーバーフローを確認できます。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む