У меня была такая же проблема. Похоже, что идентификатор сеанса, полученный в контексте Lightning, не имеет прав для авторизации запросов REST ...
Я использовал обходной путь для получения идентификатора сеанса в контексте Lightning через контекст Visualforce.
Создать следующую страницу 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
и получения значения идентификатора сеанса:
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, работает для моих запросов (т. Е. В методах @AuraEnabled).