2011-10-19 25 views
2

我有一個JavaScript應用程序運行在主頁組件。它調用一個Web服務,該服務又調用salesforce API。我想使用API​​_Session_ID變量來保存重新登錄。如何將這個暴露給在我的主頁組件中運行的JavaScript?理想情況下,我希望使用apex渲染一小段腳本,將API_Session_ID變量的JavaScript變量初始化到所有頁面上,但我看不到如何執行此操作。salesforce - 如何使API_Session_ID可用於JavaScript

注 - 我無法使用VF作爲應用程序在主頁組件中運行。正常的解決方案(在iframe中作爲VF運行)對我來說是不可用的,因爲我需要訪問主頁面中的javascript對象,而我無法從iframe中進行操作。

回答

3

好了,所以我想通了這一點。會話cookie中有一個值「sid」,這就是需要調整一下的值。很容易,當你知道如何!這裏的鏈接:

http://forums.sforce.com/t5/forums/forumtopicprintpage/board-id/general_development/message-id/7209/print-single-message/false/page/1

這是一個有點過時了。我將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']}"; 
1

我試着做同樣的事情幾次。不幸的是,沒有VisualForce我沒有成功。

雖然我在前幾天發現了關於該主題的討論主題。 http://boards.developerforce.com/t5/AJAX-Toolkit-S-Controls/Detect-current-user-with-AJAX-toolkit/m-p/277241#M8485

而且,這聽起來像你知道這一點,但要獲得使用VisualForce會話ID:

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

嘿馬修 - 謝謝你的迴應。我已經找到了它,這可能對你有用:http://forums.sforce.com/t5/forums/forumtopicprintpage/board-id/general_development/message-id/7209/print-single-message/false/第1頁 - 我會盡快回答我自己的問題,只要SA允許我...... – FatalFlaw

+0

好的發現!抓取餅乾是一種創造性的解決方案。 –

+0

VisualForce頁面使用的force.com域上的sid cookie中的會話標識無法用於API,因此您必須使用{!GETSESSIONID()}。我試圖從用戶腳本中使用它與ajax庫:http://bit.ly/POfbrW –