Не удается войти с идентификатором сеанса в Flash Builder для приложения force.com - PullRequest
1 голос
/ 28 декабря 2010

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

Моя страница 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);
        } 

1 Ответ

2 голосов
/ 30 декабря 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...