2010-12-28 1 views
1

У меня есть простое приложение Flex for Force, и я хочу встроить его в страницу VisualForce. Я сделал все, как описано в учебниках, и протестировал его против DE, но я получил INVALID_SESSION_ID: Недействительный идентификатор сеанса, найденный в SessionHeader: Незаконный сеанс. Пожалуйста, смотрите ниже код и скажите мне, где я ошибаюсь ...Не удается войти с идентификатором сеанса в Flash Builder для приложения force.com

My VF страницы:

<apex:page sidebar="false"> 
    <apex:flash src="{!$Resource.bug2_swf}" width="100%" height="100%" 
       flashvars="session_id={!$Api.Session_ID}&server_url={!$Api.Partner_Server_URL_200}"/> 
</apex:page> 

Мой файл MXML

<fx:Declarations> 
    <s:TraceTarget includeCategory="true" 
        includeLevel="true" 
        includeTime="true" 
        level="{LogEventLevel.INFO}" 
        filters="{['com.salesforce.*']}"/> 

    <flexforforce:F3WebApplication id="app" 
            statusChanged="statusChangedHandler(event)" 
            loginComplete="loginCompleteHandler(event)" 
            loginFailed="loginFailedHandler(event)" 
            sessionExpired="sessionExpiredHandler(event)" 
            /> 
</fx:Declarations> 

<fx:Script> 
    <![CDATA[ 
     import com.salesforce.events.LoginFaultEvent; 
     import com.salesforce.events.LoginResultEvent; 
     import com.salesforce.events.SessionExpiredEvent; 
     import com.salesforce.events.StatusChangedEvent; 

     import mx.collections.ArrayCollection; 
     import mx.controls.Alert; 
     import mx.events.FlexEvent; 
     import mx.logging.LogEventLevel; 
     import mx.managers.CursorManager; 
     import mx.rpc.Responder; 

     private var _username : String; 
     private var _password : String; 

     [Bindable] 
     private var _status : String = ""; 

     protected function onCreationComplete(event:FlexEvent):void 
     { 
      var obj:Object = this.parameters; 

      trace(obj.session_id); 
      trace(obj.server_url); 

      app.serverUrl = obj.server_url; 
      app.loginBySessionId(obj.session_id); 
     } 

ответ

2

Проблема заключается в сеанс, который вы передаете Flex.

{! $ Api.Session_ID} возвращает сеанс Visualforce, но {! $ Api.Partner_Server_URL_200} указывает на домен «salesforce». Вы должны получить "Salesforce" сессию, как это:

и имеет свойство в вашем контроллере/расширении, как это:

общественность Строка SessionId { прибудет { возвращения UserInfo.getSessionId() ; } }

+0

WOW! Большое спасибо! Оно работает. Я действительно должен размещать здесь свои вопросы, а не создавать случаи в партнерском портале SF :). –