window.open() に渡した帳票出力URLが変更されてしまう

ホーム フォーラム ReportsConnect for Salesforce window.open() に渡した帳票出力URLが変更されてしまう

  • このトピックには19件の返信、2人の参加者があり、最後にHNagatomiにより9年、 9ヶ月前に更新されました。
15件の投稿を表示中 - 1 - 15件目 (全20件中)
  • 投稿者
    投稿
  • #171
    HNagatomi
    参加者

    いつもお世話になっております。

    サイト「(株)ケーピーエス 「セールスフォース」技術ノート」の
    「Reports Connect for Salesforce アプリケーションへの組込み方法」
    にて記載されております方法で、帳票を出力することができておりました。

    しかしながら、今年に入って、フルバックアップでのサンドボックス環境で
    以下のように、window.Open() で開いた小ウィンドウに帳票出力URLを渡すと、
    そのURLが、強制的に「https://test.salesforce.com/」になってしまい、
    Salesforceのログイン画面が表示されてしまい、帳票が出力できません。
    (何度か繰り返すと「https://kps-reportsconnect.herokuapp.com/~」になって
    PDF出力ができたりもします)
    —————————————————————————-
    <apex:page>
      :
    <apex:form>
      :
    </apex:form>
    <apex:outputPanel id=”theBlock”>
    <script type=”text/javascript”>
    if (“{!goUrl}” != “”){
    window.open(“{!goUrl}”,null,”scrollbars=yes,width=1000,height=400″);
    }
    </script>
    </apex:outputPanel>
      :
    </apex:page>
    —————————————————————————-

    こちらのSalesforceの設定なのかもしれませんが、もし同様のお問い合わせがあったり、もしくは想定される事項がございましたら対応方法をご教授いただけると助かります。

    どうぞよろしくお願い致します。

    #172
    sweetie
    参加者

    HNagatomiさんこんにちは
    Sandbox環境で実行して、https://test.salesforce.com/のログイン画面になるのは、そのブラウザーSandbox環境にログインしていないならば正しい動きです。

    試しにそのままログインしてみたらどうなるでしょうか?

    Sandbox環境にログインしているのに、新たに開いたWindowでログイン画面が出るとすると、元の画面と開いた新Windowでセッションが共有されていないと思われます。
    一部のIEのバージョンでそのような不具合があるという情報を聞いた事があります。
    ブラウザーを変えて試してみてください。

    #178
    HNagatomi
    参加者

    早々のご回答ありがとうございます。

    >試しにそのままログインしてみたらどうなるでしょうか?
      ログイン画面が表示される場合は、ログインすると
      Salesforceのユーザーのホームのページが表示されます。印刷画面には遷移しません。

    Sandbox環境だと分かりにくいので、本番環境で動作を確認しました。
    確認前に本番環境のRConnectのヴァージョンが1.10だったので、1.19 にアップグレードしました。
    リモートサイトも “https://kps-reportsconnect5.herokuapp.com&#8221; に変更済みです。

    結果、本番環境でも同様に小ウィンドウが、https://test.salesforce.com/のログイン画面
    になってしまいます。
    ブラウザもChrome,FireFox,IEで試しましたが、結果は変わりませんでした。
    (全キャッシュ、Coookie削除)

    子ウィンドウに渡すURLを作成する際のクラスのコードの書き方ですが、
    以下のようにベースのURLを取得しています。これは正しいでしょうか?

    string baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
    String sURL = baseUrl + ‘/apex/クラス名?引数1=’ + 引数値用変数;

    度々お手数をお掛け致しますが、ご回答の程、よろしくお願い致します。

      

    #179
    HNagatomi
    参加者

    連投で失礼致します。

    子ウィンドウに渡されるURLを以下の内容でした。

    https://test.salesforce.com/services/oauth2/authorize?response_type=code&client_id=3MVG9yZ.WNe6byQAQYDKqo6PLjZ7HUsAvRIdCf6w3FwDpZ2iHioiFc9ID8SA6dWa4ZtC1B_zl.ivZQjrshGhK&redirect_uri=https://kps-reportsconnect5.herokuapp.com/dl&state=x060314571814079954

    参考になれば幸いです。
    よろしくお願い致します。

    #180
    sweetie
    参加者

    HNagatomiさん
    子ウィンドウに渡すURLを作成する際のクラスのコードの部分は意味がよくわかりませんが、この処理はなにをしているのでしょうか。

    子ウィンドウに渡されるURLですが、これは正しいURLです
    試しに、こちらでこのURLをブラウザーで呼び出すとsandboxのログイン画面となり、こちらで使用しているユーザーIDでログインするとoAuth2.0の認証プロセスが動いて、Reportsconnectの画面が出ます。(環境が正しくないのでエラー画面となりますが)

    このURLをブラウザーで呼び出してsandboxのユーザーでログインしてReportsconnectの画面になりませんか?

    #181
    HNagatomi
    参加者

    ご回答ありがとうございます。

    >子ウィンドウに渡されるURLですが、これは正しいURLです

      本番環境(非Sandbox)でも「https://test.salesforce.com/~」から始まるURLで
      問題ないということでしょうか?

    因みに、Salesforce 1 になる前のSandbox環境では問題なく動作しており、
      その時のURLは、以下のように始まります。
    「https://cs6.salesforce.com/setup/secur/RemoteAccessAuthorizationPage.apexp?~」
     
    >このURLをブラウザーで呼び出してsandboxのユーザーでログインしてReportsconnectの画面になりませんか?

      ご指摘の通りURLをブラウザーで呼び出すと、RConnectの画面になりますが、
      エラーとなります。
    (サーバーエラー:印刷処理が行えませんでした。再度処理を行なってください。x060314571814079954)

    Salesforce 1 になる前のSandbox では、問題なく子ウィンドウにRConnectの画面が
    表示されるのですが、Salesforce 1 になったことによる影響とかはございませんか?
    特に設定の追加、変更など必要はないでしょうか?

    度々で申し訳ありませんが、ご回答の程、よろしくお願い致しいます。

    #182
    sweetie
    参加者

    HNagatomiさん、失礼しました。

    本番環境からでも、sand boxのログインになるのはおかしいですね。
    reportsconnect側がsandbox環境だと判断してしまっている可能性があります。

    うまくいかないケースのsalesforceのURL(本番とsand box)を教えてください。

    ちなみに、Salesforce 1 になってからうまくいかないということですが、
    Salesforce 1になる、というのは何か設定を変えたということですか?

    #183
    HNagatomi
    参加者

    ご回答いただきありがとうございます。
    うまくいかないケースのURLを以下に記載させていただきます。

    【うまくいかないケースのsalesforceのURL 本番環境】
    https://test.salesforce.com/services/oauth2/authorize?response_type=code&client_id=3MVG9yZ.WNe6byQAQYDKqo6PLjZ7HUsAvRIdCf6w3FwDpZ2iHioiFc9ID8SA6dWa4ZtC1B_zl.ivZQjrshGhK&redirect_uri=https://kps-reportsconnect5.herokuapp.com/dl&state=x4155438846765084

    【うまくいかないケースのsalesforceのURL sandbox環境】
    https://test.salesforce.com/services/oauth2/authorize?response_type=code&client_id=3MVG9yZ.WNe6byQAQYDKqo6PLjZ7HUsAvRIdCf6w3FwDpZ2iHioiFc9ID8SA6dWa4ZtC1B_zl.ivZQjrshGhK&redirect_uri=https://kps-reportsconnect5.herokuapp.com/dl&state=x7912573960593781

    両方ともに、うまくいかない場合子ウィンドウのURLフィールドには、
    「https://test.salesforce.com/~」が表示され、Salesforceのログイン画面が
    表示されます。

    >ちなみに、Salesforce 1 になってからうまくいかないということですが、
    Salesforce 1になる、というのは何か設定を変えたということですか?

      何も設定は変更しておりません。
      また時期的にSalesforce 1 になってから発生しているのでお伺いした次第でございます。

    お手数をお掛けしておりますが、ご回答の程よろしくお願い致します。

    #184
    HNagatomi
    参加者

    お世話になっております。お伝えしていなかったことが1つございました。

    帳票オブジェクトの「印刷テスト」ボタンを押しても、お伝えしたのと同様の動きになります。
    URLについても同様です。

    以上です。よろしくお願い致します。

    #185
    sweetie
    参加者

    すみません、そのURLではなくて、通常のsalseforceのログイン後のURLを教えてください。

    https://cs5.salesforce.com/home/home.jsp

    ↑このようなURLで、現在、ReportsconnectはこのサーバーURLを手がかりにサンドボックスかどうかを判断しているのです。

    ちなみに上のURLは当方のSandboxで本番は

    https://ap.salesforce.com/home/home.jsp

    となっています。

    #186
    HNagatomi
    参加者

    お世話になっております。
    回答が遅くなりまして申し訳ありません。

    以下にうまくいかないケースのsalesforceのURL(本番とsand box)をお送りいたします。

    本番環境:
    https://nippon-neji.my.salesforce.com/home/home.jsp

    sandbox:
    https://nippon-neji–sb1.cs6.my.salesforce.com/home/home.jsp

    (因みにそのままURLを記載したくないので会社名の最初の部分を変えております)

    以上、よろしくお願い致します。

    #187
    sweetie
    参加者

    度々、恐れいります。

    本番環境およびsandboxで、以下を試していただきたいのですが、

    ①開発コンソールを開き、DebugメニューのOpen Execute Anonimous Windowを選択
    ②Enter Apex Codeのボックスに以下をいれて execを押す
    system.debug(URL.getSalesforceBaseUrl().getHost());
    ③実行時のlogでdebugに何が返っているか確認する。

    つまり、各環境で、URL.getSalesforceBaseUrl().getHost() で何が返るのかを知りたいのです。

    先ほどの投稿からするとこれが、それぞれ
    nippon-neji.my.salesforce.com

    nippon-neji–sb1.cs6.my.salesforce.com

    となっていると思われるのですが、それならば、上はlogin.salseforce、下はtest.salesforceと、言う風に正しく処理されるはずなのですが。

    (ピリオドで分割して、最初または2個めに cs+数字 があればsandbox)

    ちなみに、host名に — がふくまれているような事は無いですよね。

    後、少々気になるのですが、先の投稿で

    string baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
    String sURL = baseUrl + ‘/apex/クラス名?引数1=’ + 引数値用変数;

    というcodeが書かれていますが、これは何を意味していますでしょうか?

    • この返信は9年、 9ヶ月前にsweetieが編集しました。
    #189
    sweetie
    参加者

    すみません、それと、印刷テストボタンでも同じ現象とのことですが、印刷ボタンを押すその画面のURLがどうなっているかを教えて下さい。

    #190
    HNagatomi
    参加者

    お世話になっております。早々のご回答をいただきありがとうございます。
    長くなりますが、以下に回答させていただきます。
    (今回は社名も変えずに実際のURLを記載させていただきます)

    ■ 各環境での URL.getSalesforceBaseUrl().getHost()の返値

    [本番]
    status:成功
    https://nissan-neji.my.salesforce.com/_ui/common/apex/debug/ApexCSIPage

    [sandbox]
    status:成功
    https://nissan-neji–sb1.cs6.my.salesforce.com/_ui/common/apex/debug/ApexCSIPage

      ※「-」はありませんが、「–」となっているのは問題ないでしょうか?

    ■ 下記コードの意味
    > string baseUrl = URL.getSalesforceBaseUrl().toExternalForm();
    > String sURL = baseUrl + ‘/apex/クラス名?引数1=’ + 引数値用変数;

    現在のサーバーのURLを取得しています。
    本番、sandboxの環境に対応できるようにと考えました。
    Salesforceのヘルプページ:https://help.salesforce.com/apex/HTViewSolution?id=000004264&language=ja

    ■ 印刷ボタンを押した際の画面のURL

    [本番]

    親ウィンドウ:https://nissan-neji–kpsr.ap0.visual.force.com/apex/ReportDev?id=a1710000002VTCa&sfdc.override=1
    子ウィンドウ:https://test.salesforce.com/?ec=302&startURL=%2Fsetup%2Fsecur%2FRemoteAccessAuthorizationPage.apexp%3Fsource%3Dl86Hcy6qEKtWNqzXVErZDlmcRQs0D_HBE55MLVuP3x8t5wXkyHYyrVx2Xb5JoWzyVOJrnTqMMaWy_Sfomv.j1xklSQ67NPiEbdAN956aA9PcslibB_D_AOUlRMOMmk4HTSLeu.8P.WN4Yk2daKOrTMfM3GTr_j655mgavPdcfx868qjP9hjYOiQ2C9xtg_JvnoGKrz.cn22jFkGAc8nRL4TlgU0xgyzD4ZH5Pa5ByWqN6EUfv0brAJGvKcV9XPagoYr0bc6wWXHFc8DA5h2VvY.6HAbXodz_T4_bhrUUXvFACWia8CCGwQlskr.31tGmA9q8dmJJa41SnWjZmWzQEk8_d0siSoVvGbvO5JfqYm_JDpdwqPz_LDXehgAkgVUWHQZ_TOY.wfVRQf7umSdgWbTUorIEYZ.KhIQYw6LBiAypoZW8hNDkA
    子ウィンドウにはSalesforceログイン画面が表示される。

    [sandbox]
    親ウィンドウ:https://nissan-neji–sb1–kpsr.cs6.visual.force.com/apex/ReportDev?id=a17N00000023nM1&sfdc.override=1
    子ウィンドウ:https://test.salesforce.com/?ec=302&startURL=%2Fsetup%2Fsecur%2FRemoteAccessAuthorizationPage.apexp%3Fsource%3Dl86Hcy6qEKtWNqzXVErZDlmcRQs0D_HBE55MLVuP3x8t5wXkyHYyrVx2Xb5JoWzyVOJrnTqMMaWy_Sfomv.j1xklSQ67NPiEbdAN956aA9PcslibB_D_AOUlRMOMmk4HTSLeu.8P.WN4Yk2daKOrTMfM3GTr_j655mgavPdcfx868qjP9hjYOiQ2C9xtg_JvnoGKrz.cn22jFkGAc8nRL4TlgU0xgyzD4ZH5Pa5ByWqN6EUfv0brAJGvKcV9XPagoYr0bc6wWXHFc8DA5h2VvY.6HAbXodz_T4_bhrUUXvFACWia8CCGwQlskr.31tGmA9q8dmJJa41SnWjZmWzQEk8_d0siSoVvGbvO5JfqYm_JDpdwqPz_LDXehgBmsHNqhsyokj48rumuRuIqGRBMLDpfTqQ.hK1DDCgZRuKYdhnxu1Gu4MGHc
    子ウィンドウにはSalesforceログイン画面が表示される。

    以上、長くなりましたが、ご確認の程、よろしくお願い致します。

    #191
    sweetie
    参加者

    HNagatomi こんにちは

    サーバーに渡しているホスト名が化けている可能性があるかもしれません。

    クライアント側のプログラムを修正して、文字化けの予防措置をしたものを作成してみました。
    恐れ入りますが、以下のURLからReportsconnectをインストールして試してみていただきたいのですが。

    https://login.salesforce.com/packaging/installPackage.apexp?p0=04tG0000000Mfnh

    サンドボックスは以下のURLです

    https://test.salesforce.com/packaging/installPackage.apexp?p0=04tG0000000Mfnh

15件の投稿を表示中 - 1 - 15件目 (全20件中)
  • このトピックに返信するにはログインが必要です。