How to Get the Session Id of Current User in Lightning Context

The session id can be fetch through UserInfo.getSessionId() method in apex but which is not available lightning context. Named credentials and connected apps can be used to connect with external web services and internal salesforce api’s with Salesforce. This would requires more configurational effort and changes should be align with each deployments with respect to the orgs.

Here, I would like to share you a work around to solve this issue by using a custom visual force page and an apex controller.

<apex:page controller="LexSessionController">
Start{!$Api.Session_ID}End
</apex:page>
public class LexSessionController {
public static String fetchUserSessionId(){
String sessionId = '';
// Refer to the Page
PageReference sessionIdPage = Page.LexGetSessionIdPage;
// Get the content of the VF page
String vfContent = sessionIdPage.getContent().toString();
// Find the position of Start and End
Integer startPosition = vfContent.indexOf('Start') + 'Start'.length(),
endPosition = vfContent.indexOf('End');
// Get the Session Id
sessionId = vfContent.substring(startPosition, endPosition);
System.debug('sessionId '+sessionId);
// Return Session Id
return sessionId;
}
}

String sessionId =  LexSessionController.fetchUserSessionId();

This expression {!$Api.Session_ID} provides the session id of the current user in the VF page, which is extracted in the apex controller. the below code snippet helps to get the session id in the lightning context (AuraEnabled methods).

Leave a Reply

%d bloggers like this: