Apache flex 不使用visualforce部署salesforce.com flex应用程序

Apache flex 不使用visualforce部署salesforce.com flex应用程序,apache-flex,flash-builder,salesforce,Apache Flex,Flash Builder,Salesforce,短版本:我有一个使用Salesforce.com的API的Flex应用程序。我正试图将其部署到远程服务器,但当我试图让它登录到salesforce的服务器时,不断收到“登录过程中出错”。有什么好处 LONG VERSION(也许以后有人会觉得这很有用):我有一个flex应用程序,它是salesforce.com的附加组件 如果我将其作为静态文件上传到salesforce,然后将其嵌入到visualforce页面中,则效果良好。此方法使用“loginBySessionId”而不是loginByCr

短版本:我有一个使用Salesforce.com的API的Flex应用程序。我正试图将其部署到远程服务器,但当我试图让它登录到salesforce的服务器时,不断收到“登录过程中出错”。有什么好处

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

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

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

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

更奇怪的是,如果我将项目文件转移到另一台计算机并重新编译,它会突然起作用。因此,基本上,似乎我必须为我计划运行的每台计算机重新编译应用程序,但这并不实际。即使如此,我也不认为这会有什么不同,一个编译一个编译。是的,同样版本的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 );
}

受保护函数loginClickHandler(事件:MouseEvent):无效{
_用户名=LOGIN@LOGIN.COM';
_密码='密码+安全令牌';
setBusyCursor();
app.loginByCredentials(_用户名,_密码);
}

为了澄清这一点,您可能需要在初始化时执行类似的操作:

flash.system.Security.loadPolicyFile("http://na9.salesforce.com/services/Soap/crossdomain.xml");
当您编译它时,它工作的原因是许多默认安全性在编译的机器上是不适用的。见鬼,你甚至可以通过路径(比如硬盘上图像的相对URL路径)访问硬盘——试着在另一台计算机上运行swf,然后bam——不行


这是一个很好的指标,表明您遇到了播放器/虚拟机安全问题:)

很公平,添加了一个简短的版本,保留了一个较长的版本,以防以后有人发现(salesforce/flex的东西确实没有很好的文档记录)我想这与跨域沙箱有关,您需要确保它加载的是/services/Soap/crossdomain.xml文件,而不是根文件(我相信这是默认文件)。谢谢,这是有道理的,但我尝试了几种不同的方法,但似乎没有成功。看起来它正在加载策略文件,但它仍然不允许我登录。还尝试设置Security.allowDomain(“”);安全性。allowInsecureDomain(“”);没有骰子。这在顶级应用程序的初始化处理程序中。请尝试将serverUrl更改为https,现在大多数salesforce帐户都需要https。此外,登录调用通常转到login.salesforce.com,因此您还需要为该主机加载正确的策略文件。谢谢,Superfell尝试了此操作和多种变体,但似乎都不起作用。服务器URL应为https:,策略文件应为http?