3

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

4

1 回答 1

3

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

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

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

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

创建getSessionIdFromVFPage()实用程序方法以获取SessionId页面内容并检索 Session 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);
        }
    }
}

按方法返回并在 Lightning 上下文中使用的会话 ID 值Util.getSessionIdFromVFPage()适用于我的请求(即在 @AuraEnabled 方法中)。

于 2018-10-21T21:01:07.050 回答