0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SalesforceのデータローダーCLI をクライアントログイン情報フローでバッチ実行する

0
Last updated at Posted at 2026-08-13

SalesforceではSOAP API login() の廃止が予定されていますが、データローダーバッチモードでは現時点で公式に代替案への対応がされていない状況のようです。
そこでクライアントログイン情報フローで認証できるデータローダーを作成してみました。

非公式配布版はこちらです。

https://github.com/ponpoke/dataloader-client-credentials-release

Salesforce公式データローダーへのPull Requestを作成しています。

https://github.com/forcedotcom/dataloader/pull/1666

この記事では、配布版の使い方を説明します。

このデータローダーはSalesforce公式リリースではありません。
非公式の変更版であり、公式サポートの対象外です。
本番環境およびSandboxで利用する場合、自己責任でお願いします。


1. 配布版データローダーをダウンロードとインストールをする

GitHubの配布用リポジトリを開きます。

https://github.com/ponpoke/dataloader-client-credentials-release/releases/tag/client-credentials-v67.0.0-1

「dataloader-client-credentials-v67.0.0.zip」をダウンロードし、任意のディレクトリに展開します。

例えば、

C:\Users\username\Downloads\dataloader-client-credentials-v67.0.0

へ展開します。

以降は、この中にある install.bat を実行して、インストールを完了します。


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

Salesforceの設定画面を開きます。

設定 → 外部クライアントアプリケーションマネージャー

[新規外部クライアントアプリケーション] をクリックします。

image.png

基本情報

以下を設定します。

項目 設定
外部クライアントアプリケーション名 任意
API参照名 任意
取引先責任者メール 任意
配信状態 ローカル

OAuth設定

「API(OAuth設定の有効化)」では以下を設定します。

項目 設定
OAuthを有効化 チェック
コールバックURL https://localhost:3000/
利用可能なOAuth範囲 APIを使用してユーザーデータを管理 (api)
クライアントログイン情報フローを有効化 チェック

スクリーンショット 2026-08-13 195146.png

上記を設定したら作成します。

クライアントログイン情報フローではコールバックURLを実際の認証には使用しません。


3. 実行ユーザーを設定する

作成した外部クライアントアプリケーションを開きます。

ポリシー → 編集

以下を設定します。

項目 設定
クライアントログイン情報フローを有効化 チェック
(ユーザー名)として実行 Data Loaderを実行するユーザー
IP制限の緩和 組織のポリシーに合わせて設定

ここで指定したユーザーの権限でデータローダーが実行されます。

image.png


4. コンシューマー鍵とコンシューマーの秘密を取得する

外部クライアントアプリケーションの 「設定」から「コンシューマー鍵と秘密」をクリックして、以下の2つを取得します。

コンシューマー鍵
コンシューマーの秘密

image.png


5. データローダーの設定ディレクトリを作る

データローダーをインストールしたディレクトリにて、例えば、以下ディレクトリを作成します。

C:\Users\username\dataloaderconfig

最終的な構成のイメージは次のとおりです。

C:\Users\username\dataloaderconfig\
│
├── config.properties
├── process-conf.xml
├── dataloader.key
└── その他のmappingファイルなど

6. 暗号化キーファイルを作成する

PowerShellを開いてデータローダーの bin ディレクトリへ移動します。

cd "C:\Users\username\Downloads\dataloader-client-credentials-v67.0.0\bin"

暗号化キーファイルを作ります。

.\encrypt.bat -k "C:\Users\username\dataloaderconfig\dataloader.key"

成功すると、

Keyfile "C:\Users\username\dataloaderconfig\dataloader.key" was created!

のように表示されます。

dataloader.key はコンシューマーの秘密を復号するために必要なので、削除しないでください。

また、GitHubなどへ公開しないようにしてください。


7. コンシューマーの秘密を暗号化する

外部クライアントアプリケーションから取得したコンシューマーの秘密を暗号化します。

.\encrypt.bat -e "取得したコンシューマーの秘密" "C:\Users\username\dataloaderconfig\dataloader.key"

例えば、

.\encrypt.bat -e "xxxxxxxxxxxxxxxxxxxx" "C:\Users\username\dataloaderconfig\dataloader.key"

とします。

実行すると暗号化済みの文字列が表示されるのでコピーします。

ここで暗号化するのはコンシューマーの秘密のみです。

コンシューマー鍵は暗号化しません。


8. config.propertiesを作成する

以下を、

C:\Users\username\dataloaderconfig\config.properties

に作成します。

sfdc.oauth.flow=client_credentials

sfdc.oauth.Production.eca.clientid=コンシューマー鍵
sfdc.oauth.Production.eca.clientsecret=7.で暗号化したコンシューマーの秘密

process.encryptionKeyFile=C:/Users/username/dataloaderconfig/dataloader.key

例えば、

sfdc.oauth.flow=client_credentials

sfdc.oauth.Production.eca.clientid=3MVG9xxxxxxxxxxxxxxxxxxxxxxxx
sfdc.oauth.Production.eca.clientsecret=0123456789abcdef0123456789abcdef...

process.encryptionKeyFile=C:/Users/username/dataloaderconfig/dataloader.key

となります。

Windowsのパスに注意

.properties ファイルでは \ がエスケープ文字になります。

そのため、

process.encryptionKeyFile=C:/Users/username/dataloaderconfig/dataloader.key

のように / を使うのが簡単です。

\ を使う場合は、

process.encryptionKeyFile=C:\\Users\\username\\dataloaderconfig\\dataloader.key

とします。


9. process-conf.xmlを設定する

通常のデータローダーバッチと同じように process-conf.xml を作成します。

例えばAccountをExtractする処理なら、イメージは以下のようになります。

<entry key="sfdc.endpoint"
       value="https://login.salesforce.com"/>

<entry key="sfdc.entity"
       value="Account"/>

<entry key="process.operation"
       value="extract"/>

<entry key="sfdc.extractionSOQL"
       value="SELECT Id, Name FROM Account"/>

<entry key="dataAccess.type"
       value="csvWrite"/>

<entry key="dataAccess.name"
       value="C:\Users\username\dataloaderconfig\Account.csv"/>

クライアントログイン情報フローの場合、

sfdc.username
sfdc.password

は不要です。

以前のデータローダー設定を流用する場合、古い sfdc.password が残っている場合は削除しておくことをおすすめします。


10. クライアントログイン情報フローを実行する

クライアントログイン情報フローの bin ディレクトリから実行します。

例えば accountInsert というプロセスなら、

.\process.bat "C:\Users\username\dataloaderconfig" accountInsert

Extractなら例えば、

.\process.bat "C:\Users\username\dataloaderconfig" csvAccountExtractProcess

です。

通常のクライアントログイン情報フローと同じ、

process.bat "<設定ディレクトリ>" <プロセス名>

という形式のまま使えます。

なお、初回実行時のみブラウザが起動して、外部クライアントアプリケーションの認証が必要です。


11. 認証に成功したか確認する

正常にクライアントログイン情報フローで認証されると、ログに以下が表示されます。

OAuth Client Credentials Flow completed successfully using External Client App

続いて、

Using session id from OAuth Client Credentials Flow to establish Salesforce session

さらに、

Login succeeded

と表示されれば認証成功です。

ブラウザログインは発生しません。

ユーザー名・パスワードによる認証も行いません。


12. Sandboxの場合

SandboxではSandbox用の外部クライアントアプリケーションの認証情報を設定します。

sfdc.oauth.Sandbox.eca.clientid=YOUR_SANDBOX_CONSUMER_KEY
sfdc.oauth.Sandbox.eca.clientsecret=YOUR_ENCRYPTED_SANDBOX_CONSUMER_SECRET

接続先は通常、

https://test.salesforce.com

です。

Productionでは通常、

https://login.salesforce.com

を使用します。

まとめ

使い方を簡単にまとめると、

1. 配布版データローダーをダウンロードとインストール

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

3. クライアントログイン情報フローを有効化

4. 実行ユーザーを設定

5. コンシューマー情報を取得

6. コンシューマーの秘密をencrypt.batで暗号化

7. config.propertiesを設定

8. process-conf.xmlを設定

9. process.batを実行

です。

※ 本プロジェクトは非公式の変更版であり、Salesforce 社による
承認、推奨、サポートを受けたものではありません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?