Salesforce Developer Japanチャンネルの外部アプリから Salesforce API にアクセスする方法動画を見ながら外部クライアントアプリケーションの設定を試してみました。やってることは動画のとおり。
Youtube
設定
この手の設定を試すのに悩むのが連携先のシステムです。今回の動画では curl を接続先に設定するということで自分の環境で簡単に確認することができました。設定検索ボックスで外部クライアントアプリケーションマネージャーと入力して、設定ページにアクセスします。

新規外部クライアントアプリケーションボタンをクリックします。新規作成画面が表示されるので必要事項を入力します。

基本情報の入力
外部クライアントアプリケーション名、API参照名、取引先責任者メール、配信状態の項目が必須項目です。残りは入力しなくても進められます。
(メールアドレスは自分のアドレスを入力します。)

配信状態はローカルとパッケージ化済みの2択です。社内システム利用であればローカルでOKとのこと。

情報 URLは、その外部クライアントアプリケーションに関する説明ページへのリンクを指定する項目とのこと。未入力でも進められます。

ロゴ画像 URLとアイコンURLは必須項目ではありませんが、認証ページとかの見栄えになるのでなるべく設定しておくと良さそうです。

外部にURLを用意しなくてもサンプルロゴから指定することができます。

API (OAuth 設定の有効化)
OAuth方式とSAMLE方式があります。今回はOAuth方式を使用する形。チェックをつけると詳細の設定欄が表示されます。

利用可能な OAuth 範囲
利用可能な OAuth 範囲は必要な権限を渡します。ユーザーデータに関する処理権限を渡す場合は次のように選択。

フローの有効化

クライアントログイン情報フローを有効化にチェックをつけると代表ユーザーの権限で処理を実行できる。(コンシューマーキーを持っている人が利用可能。)

セキュリティ
上の2つのチェックありの状態にします。

残りは無視してOK。今回はこれで作成。


ポリシーの設定
編集ボタンをクリックすると更新が可能になります。

クライアントログイン情報フローを有効化にチェックをつけてユーザーを指定。メールアドレスと記載されていますが、ユーザー名を入力します。

残りの設定は今回は無視してOK。保存して完了です。

コンシューマー鍵と秘密を確認
設定タブを見るとOAuth 設定欄のアプリケーション設定内にコンシューマー鍵と秘密を確認のボタンが表示されます。

クリックするとID検証画面が表示されます。指定のメールアドレスに確認コードが届くので認証します。


これでキーの内容を確認できます。

curlコマンドでSalesforceに接続
コマンドは次のようになります。
curl -X POST "https://<your dev org domain>-c-dev-ed.develop.my.salesforce.com/services/oauth2/token" \ -d "grant_type=client_credentials" \ -d "client_id=<your client id>" \ -d "client_secret=<your client secret>"
実行結果です。

成功すればaccess tokenなどが返ってきます。改行無しでちょっと見づらいというときにはVSCodeの機能を使って変換します。

Macの場合は「Shift + option + F のキー」を押すと見やすい形に変換されます。初回は形式の選択が表示されましたが、JSONを選択すればOK。

ここで出てきたアクセストークンの情報を使って取引先レコードを取得するSOQLクエリを実行してみます。コマンドイメージは次のような感じです。
curl 'https://***-c-dev-ed.develop.my.salesforce.com/services/data/v65.0/query?q=SELECT+Id,Name+FROM+Account+LIMIT+10' -H 'Authorization: Bearer 00Dd***Od'

1行に長々あってもわかりにくいので先程のやり方で文字列をJSON形式の改行ありの形に整形します。これで取引先情報が取得できていることを確認できました。

以上がYoutube動画を見ながら外部クライアントアプリケーションの設定を試してみた結果です。外部からSalesforce組織に対して認証を行い、データを取得することができました。この仕組みを使って他システム連携系まわりの処理を実装していく形になります。
