在没有visualforce的情况下部署salesforce.com flex应用程序

时间:2011-07-07 16:55:01

标签: flex flash-builder salesforce

简短版:我有一个使用Salesforce.com API的Flex应用。我正在尝试将其部署到远程服务器,但在登录过程中仍然出现“错误”。当我尝试登录salesforce的服务器时。是什么给了什么?

LONG VERSION (也许有人后来觉得这很有用):我有一个flex应用程序,它是salesforce.com的附加组件

如果我将其作为静态文件上传到salesforce,然后将其嵌入到visualforce页面中,则可以正常工作。此方法使用“loginBySessionId”而不是loginByCredentials。

我希望能够在salesforce的服务器之外运行它。 IE,我想在我自己的服务器上托管应用程序,让人们在应用程序中输入他们的凭据,并让它登录到salesforce的服务器。这样,如果有人想尝试我的应用程序,他们就不必是salesforce管理员,也不必将应用程序安装到visualforce页面。

这就是问题所在。如果我输入登录信息并从编译器运行它,它会连接并加载正确的数据。如果我将它作为生产版本导出,它仍然可以正常运行。但是,如果我将发布文件上传到我自己的服务器,或者我将它们转移到另一台计算机并在本地运行它,我会收到“登录过程中的错误”似乎其他一些人有类似的问题,但没有解决方案,没有什么新的

Weirder仍然,如果我将项目文件传输到另一台计算机并重新编译它,它突然工作。所以基本上,似乎我必须为我计划运行它的每台计算机重新编译应用程序,但这不切实际。即便如此,我也看不出这可能会产生什么影响,一方面与另一方相比。是的,相同版本的Flash,相同版本的Flex。

有没有人对如何解决此问题有任何建议?我只是误解了如何部署flex应用程序,或者这对salesforce API来说是个棘手的问题还有解决方法吗?

另外一个让这个问题特别令人沮丧的事情是因为我无法使用调试器,因为如果我在另一台计算机上编译它,它会工作,所以为了让我得到错误我必须构建,然后转移到另一台计算机。我觉得这可能是问题的关键,但我不确定如何。

以下是一些适用的代码,非常基本:

<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 个答案:

答案 0 :(得分:2)

澄清一下,在初始化时你可能需要这样的东西:

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

编译时它起作用的原因是许多默认安全性在与编译时在同一台机器上不适用。哎呀,您甚至可以在路径中访问硬盘驱动器(比如硬盘驱动器上图像的相对URL路径) - 尝试在另一台计算机上运行swf,然后再进行操作。

这是一个很好的指标,可以解决播放器/ VM安全问题:)

相关问题