2011-07-07 3 views
0

ショートバージョン:私はSalesforce.comのAPIを使用するFlexアプリケーションを持っています。リモートサーバーに展開しようとしていますが、「ログインプロセス中にエラーが発生しました。」それをsalesforceのサーバにログインさせようとすると、何がありますか?ビジュアルフォースなしでsalesforce.com flexアプリケーションをデプロイ

LONG VERSION(多分誰かが後でこれは重宝):私はSalesforceへの静的ファイルとしてアップロードした場合salesforce.com

用アドオンのフレックスアプリケーションを持っているし、その後でそれを埋め込みますビジュアルフォースページ、それは正常に動作します。このメソッドは、loginByCredentialsではなく "loginBySessionId"を使用します。

私はsalesforceのサーバーの外でそれを実行できるようにしたいと考えています。私は自分のサーバーでこのアプリケーションをホストし、人々がそのアプリケーションの資格情報を入力してsalesforceのサーバーにログインさせるようにしたいと考えています。こうすることで、誰かが自分のアプリケーションを試してみたいと思っても、Salesforce管理者でなくても、Visualforceページにアプリケーションをインストールする必要はありません。

ここに問題があります。ログイン情報を入力してコンパイラから実行すると、正しいデータが接続されて読み込まれます。プロダクションリリースとしてエクスポートすると、それでも正常に動作します。しかし、自分のサーバーにリリースファイルをアップロードするか、別のコンピュータに転送してローカルで実行すると、「ログインプロセス中にエラーが発生します」というメッセージが表示されます。 。

プロジェクトファイルを別のコンピュータに転送して再コンパイルすると、突然動作します。だから基本的に、私はそれを実行する予定の各コンピュータのために、アプリケーションを再コンパイルする必要があるようだが、それは実用的ではない。それでも、私はそれがどうやって違いを生み出すのか、どちらか一方をコンパイルするのか分かりません。そして、はい、同じバージョンのFlash、同じバージョンの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

であり、十分な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を別のコンピュータで実行してみてください。

これは、この質問はTLを必要とするあなたはプレーヤー/ VMのセキュリティ問題をヒットしている優れた指標:)

+0

ありがとう、それは理にかなっていますが、私はそれをいくつかの方法で試しましたが、成功していないようです。ポリシーファイルがロードされているように見えますが、まだログインできません。また、Security.allowDomain( '*'); Security.allowInsecureDomain( '*');を設定しようとしました。ダイスはありません。これはトップレベルアプリケーションの初期化ハンドラにあります。 –

+0

serverUrlをhttpsに変更すると、ほとんどのSalesforceアカウントには最近のhttpsが必要になります。 – superfell

+0

また、loginは通常はgoto login.salesforce.comと呼ばれるため、そのホスト用の適切なポリシーファイルもロードする必要があります。 – superfell

関連する問題