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

时间:2018-07-03 10:10:13

标签: salesforce salesforce-lightning salesforce-communities

我需要从Salesforce闪电组件调用REST API,因为在请求REST服务时,我需要具有该用户的会话ID。但是,在Salesforce的当前版本(夏季18)中,我从UserInfo获得的会话ID始终无效,这意味着Salesforce在夏季18版本中不提供会话ID。还有其他方法可以在Summer18获得会话ID?

1 个答案:

答案 0 :(得分:2)

我有同样的问题。看来在Lightning上下文中检索到的会话ID没有特权来授权REST请求...

我使用解决方法通过Visualforce上下文在Lightning上下文中获取会话ID。

使用SessionId名称创建以下Visualforce页面:

<apex:page standardStylesheets="false" lightningStylesheets="false">
    <span style="display: none">
        SESSION_ID_START{!$API.Session_ID}SESSION_ID_END
    </span>
</apex:page>

创建getSessionIdFromVFPage()实用程序方法以获取SessionId页面的内容并检索会话ID的值:

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);
        }
    }
}

通过Util.getSessionIdFromVFPage()方法还原的会话ID的值在Lightning上下文中用于我的请求(即,在@AuraEnabled方法中)。