2010-12-28 10 views
1

Ich habe eine einfache Anwendung von Flex for Force und möchte sie in die VisualForce-Seite einbetten. Ich habe alles wie in Tutorials beschrieben gemacht und es mit DE getestet, aber ich bekomme INVALID_SESSION_ID: Ungültige Session ID gefunden in SessionHeader: Illegale Session. Bitte beachten Sie den Code unten und sagen Sie mir, wo ich falsch ...Anmeldung mit Sitzungs-ID im Flash Builder für force.com-Anwendung nicht möglich

Meine Seite 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> 

Meine MXML-Datei

<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); 
     } 

Antwort

2

Das Problem ist in Die Sitzung, die Sie an Flex übergeben.

{! $ Api.Session_ID} gibt die Visualforce-Sitzung zurück, aber {! $ Api.Partner_Server_URL_200} verweist auf die Domäne "salesforce". Sie müssen die "Salesforce" Sitzung wie folgt zu erhalten:

und haben eine Eigenschaft in Ihrem Controller/Erweiterung wie folgt aus:

public String SessionId { get { return UserInfo.getSessionId() ; } }

+0

WOW! Vielen Dank! Es klappt. Ich sollte hier wirklich meine Fragen posten, anstatt Fälle im SF-Partnerportal zu erstellen :). –