LWCからREST経由で別のSalesforce組織を呼び出す

Aug 21 2020

頂点なしで、つまりJavascript(fetch、xhr)を使用してLWCから残りのapiコールアウトを(同じsalesforce組織に)作成したいと思います。コールアウトを行うための名前付き資格情報を作成しました。そして、ユーザーがログインしていないLWCからファイルをアップロードしようとしています。ヒープサイズの問題のため、apexを使用できません。

それで、名前付き資格情報を使用してRESTエンドポイントにapex httpコールアウトを作成するように、ユーザー資格情報やトークンなしでLWC JSからRESTAPIエンドポイントを呼び出す方法はありますか?

回答

arut Aug 21 2020 at 18:54

それで、名前付き資格情報を使用してRESTエンドポイントにapex httpコールアウトを作成するように、ユーザー資格情報やトークンなしでLWC JSからRESTAPIエンドポイントを呼び出す方法はありますか?

番号

apexでは、以下のコードスニペットに示すように、名前付きの資格情報のコールアウトを作成します。

HttpRequest req = new HttpRequest();
req.setEndpoint('callout:My_Named_Credential/some_path');

これはsetEndpointHttpRequestオブジェクトのメソッドが、指定された資格情報を識別し、リクエストとともに認証トークンを渡す責任を負うことを意味します。

FetchXmlHttpRequestはJavascriptベースのWebAPIであり、Salesforceによって管理されていません。つまり、これらを使用する場合は、認証パラメータを自分で処理/渡す必要があります。さらに、これらのAPIのいずれかを使用してクライアント側のWebリクエストを行う場合、コードはSalesforceサーバー(指定された資格情報を維持する)にまったくヒットしません。

注:apexコードを呼び出してWebリクエストを作成する汎用LWCユーティリティを作成できますが、fetchまたはxhrを使用する必要はありません。

YsrShk Aug 22 2020 at 00:14

特にSalesforceへのコールアウトを行うには、トークンが必要です。

これで、以下の方法でトークンを保存/ JSに渡すことができます(頂点の方法が少ない/ない)-

  1. Apexから渡す-単純な文字列を簡単に渡すことができます。トレイルヘッドリンク
  2. VFページからLWCコンポーネントにパラメータとして渡すことができます-例:
<c:component-name sessionId ='{! sessionId }' />
  1. CookieからセッションIDをフェッチすることができます-sidはtoken(sessionId)に他なりません。
  2. 呼び出し元コンポーネントから暗号化されたブラウザに保存できます(ブラウザのストレージAPIを使用)-推奨されません。