Salesforce Lightning:如何在Salesforce Lightning组件中获取当前用户的会话Id?

Salesforce Lightning:如何在Salesforce Lightning组件中获取当前用户的会话Id?,salesforce,salesforce-lightning,salesforce-communities,Salesforce,Salesforce Lightning,Salesforce Communities,我需要从Salesforce lightning组件调用REST API,因此在请求REST服务时,我需要该用户的会话id。但是,在Salesforce的当前版本(Summer 18)中,我从UserInfo获得的会话id总是无效的,这意味着Salesforce在Summer 18版本中没有提供会话id。在Summer18中是否有其他方法可以获取会话Id?我也遇到了同样的问题。在Lightning上下文中检索到的会话Id似乎没有授权REST请求的权限 我使用变通方法通过Visualforce上下

我需要从Salesforce lightning组件调用REST API,因此在请求REST服务时,我需要该用户的会话id。但是,在Salesforce的当前版本(Summer 18)中,我从UserInfo获得的会话id总是无效的,这意味着Salesforce在Summer 18版本中没有提供会话id。在Summer18中是否有其他方法可以获取会话Id?

我也遇到了同样的问题。在Lightning上下文中检索到的会话Id似乎没有授权REST请求的权限

我使用变通方法通过Visualforce上下文在Lightning上下文中获取会话Id

使用
SessionId
name创建以下Visualforce页面:

<apex:page standardStylesheets="false" lightningStylesheets="false">
    <span style="display: none">
        SESSION_ID_START{!$API.Session_ID}SESSION_ID_END
    </span>
</apex:page>
通过
Util.getSessionIdFromVFPage()
方法检索会话Id的值,并在Lightning上下文中用于我的请求(即@AuraEnabled方法)

public class Util {
    public static String getSessionIdFromVFPage() {
        if(Test.isRunningTest()) {
            return 'SESSION_ID';
        } else {
            String SESSION_ID_START = 'SESSION_ID_START';
            String SESSION_ID_END = 'SESSION_ID_END';
            String pageContent = Page.SessionId.getContent().toString();
            Integer startIndex = pageContent.indexOf(SESSION_ID_START) + SESSION_ID_START.length();
            Integer endIndex = pageContent.indexOf(SESSION_ID_END);
            return pageContent.substring(startIndex, endIndex);
        }
    }
}