Chiamare un'altra organizzazione Salesforce tramite REST da LWC

Aug 21 2020

Voglio fare rest callout api (alla stessa organizzazione salesforce) senza apice cioè da LWC usando Javascript (fetch, xhr). Ho creato una credenziale denominata per effettuare il callout. E sto provando a caricare file da LWC in cui l'utente non è connesso. Non posso usare apex a causa di problemi di dimensione dell'heap.

Quindi c'è un modo per chiamare l'endpoint rest dell'API da LWC JS senza credenziali utente o token, come se si facesse il callout http apex per l'endpoint rest utilizzando credenziali denominate?

Risposte

arut Aug 21 2020 at 18:54

Quindi c'è un modo per chiamare l'endpoint rest dell'API da LWC JS senza credenziali utente o token, come se si facesse il callout http apex per l'endpoint rest utilizzando credenziali denominate?

NO

In apex, creerai un callout delle credenziali con nome come mostrato nello snippet di codice di seguito:

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

Ciò significa che il setEndpointmetodo HttpRequestdell'oggetto si assume la responsabilità di identificare la credenziale nominata e di passare i token di autenticazione insieme alla richiesta.

Fetch& XmlHttpRequestsono API Web basate su Javascript e non sono gestite da Salesforce. Ciò significa che quando li usi, dovrai gestire / passare i parametri di autenticazione da solo. Inoltre, se stai effettuando una richiesta web lato client utilizzando una di queste API, il tuo codice non raggiungerà affatto i server Salesforce (che mantengono le credenziali nominate).

Nota: è possibile scrivere un'utilità LWC generica che richiami il codice apex e crei una richiesta Web, ma ciò non richiede l'utilizzo di fetch o xhr.

YsrShk Aug 22 2020 at 00:14

Per eseguire specificamente i callout a Salesforce, dovresti avere il token.

Ora puoi seguire i seguenti modi per archiviare / passare il token a JS (con modi bassi / senza apice) -

  1. Passaggio da Apex - È possibile passare facilmente una stringa semplice. Collegamento trailhead
  2. Puoi farlo passare dalla pagina VF come parametro al componente LWC - Es
<c:component-name sessionId ='{! sessionId }' />
  1. Puoi recuperare l'ID di sessione dai cookie: sid, non è altro che token (sessionId).
  2. È possibile archiviarlo sul browser con componente crittografato dal chiamante (con l'aiuto delle API di archiviazione del browser) - Non consigliato.