Skip to main content

いつもお世話になっております。

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を動かすための設定についてご教授頂ければ幸いです。

宜しくお願い致します。

4 Antworten
  1. 17. Feb. 2024, 02:51

    @Shouhei Kano さん

     

    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を利用しています。