Развертывание гибкого приложения salesforce.com без visualforce - PullRequest
0 голосов
/ 07 июля 2011

КРАТКАЯ ВЕРСИЯ: У меня есть приложение Flex, использующее API Salesforce.com.Я пытаюсь развернуть его на удаленном сервере, но получаю сообщение «Ошибка при входе в систему».когда я пытаюсь войти в систему на серверах Salesforce.Что дает?

ДЛИТЕЛЬНАЯ ВЕРСИЯ (возможно, кто-то найдет это полезным позже): у меня есть гибкое приложение, которое является надстройкой для salesforce.com

Если я загружу егокак статический файл для salesforce, а затем встраивать его в страницу visualforce, он работает нормально.Этот метод использует «loginBySessionId», а не loginByCredentials.

Я хотел бы иметь возможность запускать его вне серверов Salesforce.IE, я бы хотел разместить приложение на своем собственном сервере, чтобы люди вводили свои учетные данные в приложение и позволяли ему входить в систему на серверах salesforce.Таким образом, если кто-то захочет попробовать мое приложение, им не обязательно быть администраторами Salesforce и не нужно устанавливать приложение на страницу Visualforce.

Вот в чем проблема. Если я ввожу свою регистрационную информацию и запускаю ее из компилятора, он подключается и загружает нужные данные.Если я экспортирую его как производственный выпуск, он все равно будет работать нормально.Однако, если я либо загружаю файлы релизов на свой собственный сервер, либо если я переношу их на другой компьютер и запускаю их локально, я получаю сообщение «Ошибка при входе в систему». Похоже, что у некоторых других были подобные проблемы, но нет решений и ничего нового..

Еще более странно, что если я перенесу файлы проекта на другой компьютер и перекомпилирую их, это неожиданно сработает.В общем, кажется, что мне нужно перекомпилировать приложение для каждого компьютера, на котором я планирую его запустить, но это не практично.Даже до сих пор я не понимаю, как это могло бы иметь значение, компилируя одно против другого.И да, те же версии флэш-памяти, те же версии Flex.

У кого-нибудь есть какие-либо предложения о том, как решить эту проблему?Я просто что-то неправильно понимаю, как развертывать приложения Flex, или это какая-то странная вещь с API Salesforce, и есть обходной путь?

Как еще одна вещь, которая делает эту проблему особенно неприятной заключается в том, чтоЯ не могу использовать отладчик, потому что, если я скомпилирую его на другом компьютере, он будет работать, поэтому для того, чтобы я получил ошибку, которую мне пришлось создать, затем перенес ее на другой компьютер.Я чувствую, что это может быть ключом к проблеме, но я не уверен, как.

Вот некоторый применимый код, довольно простой:

<flexforforce:F3WebApplication 
    id="app" statusChanged="statusChangedHandler(event)"       
    loginComplete="loginCompleteHandler(event)" 
    loginFailed="loginFailedHandler(event)" 
    sessionExpired="sessionExpiredHandler(event)" 
    serverUrl="http://na9.salesforce.com/services/Soap/u/19.0" 
    requiredTypes="Account,Contact,Opportunity,Lead,Task,User" />

protected function loginClickHandler( event : MouseEvent ) : void {
    _username = 'LOGIN@LOGIN.COM';
    _password = 'PASSWORD+SECURITY_TOKEN';
    CursorManager.setBusyCursor();
    app.loginByCredentials( _username, _password );
}

1 Ответ

2 голосов
/ 07 июля 2011

Для пояснения, вам, вероятно, понадобится что-то подобное при инициализации:

flash.system.Security.loadPolicyFile("http://na9.salesforce.com/services/Soap/crossdomain.xml");

Причина, по которой он работает при компиляции, заключается в том, что большая часть безопасности по умолчанию неприменима на той же машине, что и компилируемая.Черт возьми, вы даже можете получить доступ к жесткому диску по путям (например, по относительному URL-пути к изображению на жестком диске) - попробуйте запустить swf на другом компьютере и бездельничать.

Это отличный показатель того, что вы сталкиваетесь с проблемой безопасности плеера / ВМ:)

...