salesforce-如何使API_会话_ID可用于javascript

salesforce-如何使API_会话_ID可用于javascript,salesforce,Salesforce,我有一个javascript应用程序在主页组件中运行。它调用一个web服务,而web服务又调用SalesforceAPI。我想使用API_Session_ID变量保存重新登录。如何将其公开给在我的主页组件中运行的javascript?理想情况下,我希望使用apex在所有页面上呈现一小段脚本,使用API_Session_ID变量初始化javascript变量,但我不知道如何做到这一点 注意-我不能使用VF,因为应用程序正在主页组件中运行。正常的解决方案(在iframe中作为VF运行)对我来说不可用

我有一个javascript应用程序在主页组件中运行。它调用一个web服务,而web服务又调用SalesforceAPI。我想使用API_Session_ID变量保存重新登录。如何将其公开给在我的主页组件中运行的javascript?理想情况下,我希望使用apex在所有页面上呈现一小段脚本,使用API_Session_ID变量初始化javascript变量,但我不知道如何做到这一点


注意-我不能使用VF,因为应用程序正在主页组件中运行。正常的解决方案(在iframe中作为VF运行)对我来说不可用,因为我需要访问主页中的javascript对象,这在iframe中是做不到的。

我也尝试过几次同样的事情。不幸的是,没有视觉力量我就没有成功

不过,几天前我确实找到了一条关于这个话题的讨论线索。

另外,听起来您知道这一点,但要使用VisualForce获取会话ID:

<script type="text/javascript">
    var __sfdcSessionId = '{!GETSESSIONID()}';
</script>

var_uusfdcsessionid='{!GETSESSIONID()}';

好的,我就想出来了。会话cookie中有一个值'sid',这是需要稍加调整的。当你知道怎么做的时候就容易了!以下是链接:

有点过时了。我将cookie sid值和window.location.host传递给我的php web服务。使这些值起作用的php是:

$sidparts = explode("!", $feed->sid['value']);
$location = "https://".parse_url($feed->server['value'],
    PHP_URL_HOST)."/services/Soap/u/20.0/".$sidparts[0];
$sessionId = "{$feed->sid['value']}";

嘿,马修-谢谢你的回复。事实上,我已经弄明白了,这可能对你有用:-一旦SA允许我…很好的发现,我会更完整地回答我自己的问题!抓取cookie是一种创造性的解决方案。VisualForce页面使用的force.com域上的sid cookie中的会话id对于API无效,因此必须使用{!GETSESSIONID()}。我试图在用户脚本中使用ajax库: