Chiamare un'altra organizzazione Salesforce tramite REST da LWC
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
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 setEndpoint
metodo HttpRequest
dell'oggetto si assume la responsabilità di identificare la credenziale nominata e di passare i token di autenticazione insieme alla richiesta.
Fetch
& XmlHttpRequest
sono 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.
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) -
- Passaggio da Apex - È possibile passare facilmente una stringa semplice. Collegamento trailhead
- Puoi farlo passare dalla pagina VF come parametro al componente LWC - Es
<c:component-name sessionId ='{! sessionId }' />
- Puoi recuperare l'ID di sessione dai cookie: sid, non è altro che token (sessionId).
- È possibile archiviarlo sul browser con componente crittografato dal chiamante (con l'aiuto delle API di archiviazione del browser) - Non consigliato.