【第376回】 Marketing Cloud Next : REST API 用のアクセストークンを取得
以前、Marketing Cloud Engagement における REST API 利用時のアクセストークン取得方法について記事にしました。
今回は Salesforce Platform を対象に、Data Cloud や Marketing Cloud Next の REST API を利用するための Client Credentials Flow の設定方法を解説します。
Marketing Cloud Engagement と同様に REST API を利用するためにはアクセストークンの取得が必要ですが、Salesforce Platform では OAuth クライアント(外部クライアントアプリケーション) を作成して認証を行います。
💡 外部クライアントアプリケーションとは?
Marketing Cloud Engagement を利用したことがある方は、「インストール済みパッケージ」をイメージすると分かりやすいでしょう。どちらも API を利用するアプリケーションを登録し、Client ID や Client Secret を発行するための仕組みです。ただし、Salesforce Platform の「外部クライアントアプリケーション」は OAuth 認証の設定に特化している点が異なります。
さて、私は Postman ではなく Talend API Tester(Chrome 拡張機能)を普段から利用しているため、本記事では Talend API Tester を使用します。もちろん、Postman を利用する場合でも同じ手順で実施できます。
設定の流れは次の 4 ステップです。今回は ①~③ を取り上げ、④ の REST API 呼び出しについては別の記事で解説します。
① API 連携用の外部クライアントアプリケーションを作成する
② Talend API Tester をインストールする
③ Client Credentials Flow を利用してアクセストークンを取得する
④ REST API を実行する
① API 連携のインターフェース設定
1. 「API の実行ユーザー」(= Integration User)を用意します。
※ デモ環境であれば、システム管理者を利用しても構いません。
💡 Integration User とは?
Integration User は、REST API や外部システム連携専用の Salesforce ユーザーです。人がログインして操作するためではなく、API が Salesforce を操作するときに「誰の権限で実行するか」を表すために使用します。
姓:Marketing Cloud Next Integration
別名:MCN-API
メール:管理者の実際のメールアドレス
ユーザー名:mcnext.integration@~
ニックネーム:mcnext.integration
ユーザーライセンス:Salesforce Integration
プロファイル:Minimum Access - API Only Integrations
※ このプロファイルは API 専用の最小権限プロファイルです

Tips:「Minimum Access - API Only Integrations」をプロファイルに選択した場合、このユーザーで Salesforce の画面へログインすると 「Access Restricted for API Only Users」 と表示されます。これは正常な動作です。このプロファイルは API 専用ユーザー向けのため、ブラウザからの UI アクセスは許可されていません。Integration User 自身でログインして管理するのではなく、システム管理者が自分の管理者アカウントで Integration User を管理してください。

以下は、Integration User のパスワードについての FAQ です。
Q. Integration User にもパスワードポリシーは適用される?
A. はい。Integration User も通常のユーザーと同様に組織のパスワードポリシーが適用されるため、設定によっては 90 日ごとのパスワード変更が求められます。
Q. パスワードの有効期限が切れると Client Credentials Flow は停止する?
A. 停止しません。Client Credentials Flow は、ユーザーのパスワードではなく Client ID と Client Secret を使用して認証を行います。そのため、Run-As User として指定した Integration User のパスワードが有効期限切れとなっても、通常は API の実行に影響はありません。
Q. そもそもパスワード変更をなくしたい場合は?
A. Integration User に 権限セットで、システム権限 の「Password Never Expires(パスワード無期限)」 権限を付与します。これにより、組織のパスワードポリシーにかかわらず、定期的なパスワード変更を回避できます。
↓ ↓ ↓
※ システム権限 の「Password Never Expires(パスワード無期限)」 権限を付与するには、事前に Permission Set License(PSL)の「Salesforce API Integration」の割り当てが必要 なので、そちらもお忘れなく。

2. 作成した Integration User に、以下の 2 つの権限セットを割り当てます。
Data Cloud アーキテクト
Marketing Cloud 管理者

※ 本記事では、デモ用として割と広めの権限を付与しています。本番環境では、用途に応じて必要最小限の権限を付与してください。
3. 次に、「設定」から「外部クライアントアプリケーション」と検索します。表示された「設定」をクリックし、「REST API を使用した外部クライアントアプリケーションのコンシューマーの秘密へのアクセスを許可」を有効化してください。

4. 続いて、「外部クライアントアプリケーションマネージャー」を選択して、「新規外部クライアントアプリケーション」をクリックします。

5. 「基本情報」の必須項目を入力していきます。
外部クライアントアプリケーション名
利用用途が分かる名前を入力します。入力すると API 参照名 は自動で設定されます。どちらも内部管理用のため、分かりやすい名前であれば問題ありません。取引先責任者メール
利用可能なメールアドレスを入力します。このメールアドレスに通常のAPI 利用で通知が送信されることはありません。アプリケーションの管理者情報(連絡先)として登録するためのものです。配信状態
今回は現在の Salesforce 組織内だけで利用するため、「ローカル」 のままで問題ありません。

6. 続いて、API(OAuth 設定の有効化)を開いて OAuth を有効化 します。

7. コールバック URL は入力が必須ですが、実際は使用されませんので、適当な「https://localhost:3000/oauth/callback」などを入力します。OAuth 範囲(スコープ)は、以下の 2 つを選択してください。
① API を使用してユーザーデータを管理 (api)
Manage user data via APIs (api)② いつでも要求を実行 (refresh_token, offline_access)
Perform requests at any time (refresh_token, offline_access)

Tips:ここで、コールバック URL が利用されない理由とは、この Client Credentials Flow の認証方式では、ブラウザを使ったログインの処理がありません。サーバー同士が直接アクセストークンを取得するため、認証後に戻ってくる先(コールバック URL)が存在しないためです。
8. 少し下にスクロールして、「クライアントログイン情報フロー(Client Credentials Flow)を有効化」 のチェックを入れ、「作成」ボタンを押します。

Tips:少し下に見える セキュリティ設定 は、デフォルト設定のままで問題ありません。今回利用する Client Credentials Flow では、Refresh Token や Authorization Code Flow を使用しないため、これらの設定はアクセストークンの取得に影響しません。
9. 続いて、「ポリシー」タブで「編集」ボタンをクリックします。

10. OAuth ポリシーを開いて、「クライアントログイン情報フローを有効化」にチェックを入れて、「(ユーザー名)として実行」に、最初に用意した Integration User の「ユーザー名」を入力して「保存」します。
※ 一時的にシステム管理者を入力しても問題ありませんが、最終的には、最小権限で設定されている Integration User を指定するのがベストプラクティスです。

注意:保存をクリックしたときに、存在しないユーザー名だったり、有効なユーザーでない場合は、エラーが発生します。
11. 続いて、「設定」タブに移動して、OAuth 設定を開きます。

12. 「コンシューマー鍵と秘密」のボタンをクリックします。

13. 「モバイル認証」か「パスコード認証」になりますので、認証します。この認証は現在ログインしているシステム管理者のものです。

14. 「コンシューマー鍵」と「コンシューマーの秘密」が表示されます。これは後ほど使うので、コピーしてメモしておくか、このページを開いたままにします。

Tips:Client Secret は自動的に定期ローテーションされることはありません。管理者が明示的に再生成(ローテーション)しない限り、同じ Client Secret を継続して利用できます。
② Talend API Tester のインストール
次に、Google Chrome のウェブストアから Chrome 拡張機能「Talend API Tester」をインストールします。
現在お使いのパソコンにこの拡張機能をインストールして問題ないか、会社の IT システム部門に確認してください。
1. Chrome ウェブストアで「Talend API Tester」を検索します。

2. 「Talend API Tester - Free Edition」をインストールします。

3. インストールが完了したら、Talend API Tester を開きます。

③ 「アクセストークン」を要求
それでは、いよいよ「アクセストークン」を取得してみましょう。取得にあたっては、次の 3 つを準備しておく必要があります。
・「私のドメイン」を利用している場合は、そのドメイン
・コンシューマー鍵
・コンシューマーの秘密
1. まず、リクエストタブで新規のリクエストを開き、メソッドを「POST」に設定します。

2. 次に、エンドポイント URL を入力します。

https://[My Domain Name].my.salesforce.com/services/oauth2/token
※「私のドメイン名」は、設定から「私のドメイン」を確認してください。

3. 次に、ヘッダーの設定を行います。以下の内容を入力してください。
Content-Type:application/x-www-form-urlencoded

4. 次に、ボディのセクションの右にある Text のタブを Form に変更します。

5. Add form parameter を 3 回クリックして、3 つのパラメーターが入力できるようにします。

6. name 欄には、以下の 3 つを入力します。
grant_type
client_id
client_secret

7. grant_type には、固定の文字列で「client_credentials」を入力します。

8. 残りの client_id と client_secret は、先ほど取得済みなので、開いているページからコピーして貼り付けます。

9. すべての入力が完了したら、「送信」ボタンをクリックします。

10. 送信後、下にスクロールして、リクエストが成功していれば、アクセストークンが記載されています。完了です。

11. 最後に、今回設定したリクエストを後で再利用できるように、名前を付けて保存しておきましょう。

いかがでしたでしょうか。
これで、Data Cloud や Marketing Cloud Next に REST API でアクセスできる「アクセストークン」の取得は完了となります。次の記事では、早速このアクセストークンを使って、Marketing Cloud Next の Winter '26 の新機能である「オンデマンドフロー」を試してみたいと思います。
今回は以上です。
