2011-07-07 129 views
0

简短版本:我有一个使用Salesforce.com API的Flex应用程序。我正在尝试将其部署到远程服务器,但不断收到“登录过程中出现错误”。当我尝试登录到salesforce的服务器时。是什么赋予了?在没有Visualforce的情况下部署salesforce.com flex应用程序

长版(也许有人认为这有用更高版本):我有一个Flex应用程序是为salesforce.com

一个附加的,如果我上传它作为一个静态文件到Salesforce,然后将其嵌入到一个visualforce页面,它工作正常。此方法使用“loginBySessionId”而不是loginByCredentials。

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

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

Weirder仍然是,如果我将项目文件传输到另一台计算机并重新编译它,它突然生效。所以基本上,似乎我必须重新编译我计划运行它的每台计算机的应用程序,但这不切实际。即使如此,我也没有看到这样做可能会产生什么影响,可以在一个和另一个之间编译。是的,相同版本的闪存,相同版本的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 = '[email protected]'; 
    _password = 'PASSWORD+SECURITY_TOKEN'; 
    CursorManager.setBusyCursor(); 
    app.loginByCredentials(_username, _password); 
} 
+0

这个问题的一个很好的指标需要一个TL; DR –

+0

很公平,增加了一个短版,留下一个长的情况下,后来有人认为这(salesforce/flex的东西真的没有很好的文档) –

+0

我想这与跨域沙盒相关,你需要确保它加载/services/Soap/crossdomain.xml文件,而不是根目录(我相信将是默认) – superfell

回答

2

为了澄清,你可能需要在初始化时是这样的:

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

当你编译它,它的工作原理的原因是在编译的同一台机器上,很多默认安全性不适用。哎呀,你甚至可以访问路径中的硬盘驱动器(例如硬盘驱动器上的图像的相对URL路径) - 尝试在另一台计算机上运行swf,然后不使用。

这是你打的玩家/ VM安全问题:)

+0

谢谢,这是有道理的,但我尝试了几种不同的方式,但似乎没有成功。看起来它正在加载策略文件,但它仍然不让我登录。还尝试设置Security.allowDomain('*'); Security.allowInsecureDomain('*');没有骰子。这是在顶级应用程序的初始化处理程序中。 –

+0

尝试将serverUrl更改为https,这些日子大多数salesforce帐户都需要https。 – superfell

+0

登录调用通常也会转到login.salesforce.com,因此您还需要为该主机加载正确的策略文件。 – superfell

相关问题