いつもお世話になっております。
LWCでToolingAPIを使用して
https://私のドメイン.salesforce.com/services/data/v60.0/tooling/query/?q=クエリ
のエンドポイントに対して情報をGETする画面を作成しようとしております。
結果としては「"errorCode":"INVALID_SESSION_ID"」が返ってきてしまっています。
Apex上のヘッダーリクエストにて
req.setHeader('Authorization', 'Bearer ' + セッションID);
の箇所だと思うのですが、セッションIDに権限を持たせる方法が分かりません。
ヘルプを見ながらToolingAPIの有効化を行ったのですがWEB周りの知識に疎く、自分で何を行ったのかがイマイチ理解出来ていません。
以下、行ったこと
①:新規接続アプリケーションを作成し、コンシューマー鍵と秘密を作成
(これがToolingAPIとして今後振る舞う?)
②:承認プロバイダを作成し、①で作成した鍵と秘密を設定。
(コールバックURLに記載された箇所からのアクセスをsalesforceに許可させている?)
③:①のコールバックURLを②で出力されたURLに置き換える。
(ToolingAPIへの接続が成功すればこのURLにてsalesforceに接続させる為の設定?)
④:指定ログイン情報にてhttps://私のドメイン.salesforce.com/ を設定。
(このURLでToolingAPIへの接続を設定したことになる?)
⑤:外部ログイン情報を以下で作成
認証プロトコル:OAuth 2.0
認証フロー種別:ブラウザーフロー
認証プロバイダー:②で作成した認証プロバイダ
⑥:プロファイルや権限セットで⑤を許可したいユーザーに設定
⑦:④の外部ログイン情報に⑤を設定
を行いましたが「"errorCode":"INVALID_SESSION_ID"」が表示されています。
https://help.salesforce.com/s/articleView?id=sf.permissions-uapa-create-a-connected-app.htm&type=5
こちらのヘルプには以上の手順が記載されているのですが、これを行っても
req.setHeader('Authorization', 'Bearer ' + セッションID);
のセッションIDに権限を与える設定とは関係が無いように映っており、どうすればよいのか手詰まりの状態です。
Apex上でToolingAPIを動かすための設定についてご教授頂ければ幸いです。
宜しくお願い致します。
LWCでTooling APIを使ったことはないですが、Postmanを使ったときにINVALID_SESSION_IDが発生したことはあります。
その時はエンドポイントのURLをlightning.force.comで指定していました。エラーをよく見ると何故かリダイレクトされていましたね。結局はmy.salesforce.comを指定すればリダイレクトされずにうまく機能しました。
PostmanからSalesforceのAPIを呼び出すときのINVALID_SESSION_ID
SalesforceのAPIを使う時は以前はcurlコマンドかApexでコードを書いてましたが、Postmanの使い方をPostman Japanさんのハンズオンで教えてもらってからはもっぱらPostmanを利用しています。