【问题标题】:Salesforce Lightning: How can i get session Id of current user in Salesforce lightning component?Salesforce Lightning:如何在 Salesforce Lightning 组件中获取当前用户的会话 ID?
【发布时间】:2018-12-11 14:40:30
【问题描述】:

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

【问题讨论】:

    标签: salesforce salesforce-lightning salesforce-communities


    【解决方案1】:

    我遇到了同样的问题。看起来在 Lightning 上下文中检索到的 Session 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页面的内容并检索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);
            }
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2021-03-10
      • 1970-01-01
      相关资源
      最近更新 更多