0

この DotNetOpenAuth チュートリアルの簡単な実装に取り​​組んでいます。

Chrome、Firefox、IE などの通常のブラウザでは問題なく動作します。しかし、PhoneGap childBrowser プラグインからこの「google_login.aspx」ページを呼び出すと、失敗します。

ユーザーが自分の資格情報を Google に入力した400 -Bad Request - Invalid URL 、エラーが発生します。

Google が私のサイトにリダイレクトしようとすると、 Googleは次のような不適切な URL を使用しようとします。

https://myurl.com/(F(8g0QkKd61D6yBbN2pkuZwAXOTGChqwruytA0LCC_nZko2mXgddbDhT3nXCj3XWVwOSkyfNGENHtctVXbnAyFQcj344Cai3rrkKKO_SNM_laGIqIPN2pkSBJQQYc98T0qv_gZbm3R8Qufry7u-HLAAT_RfVpMtpbCM6sw-FLPuxxHUETRHjd8lA9DR7LKIfkMYYinZU_qLduO02f012wZ2feVi8XW479WOvrWCr_rHFAxPNEQFurrJO1rxGs1LUFzTZ4pNlgpm4LwHrv7lTtK5-adDKbQJXzFrjEAG22pNxGfKpesHNsV-m88zp20w70FtF56wppLfzadNgq7cPDlb3hIwbsA-JGI1he8low8_KWDNZev5RqtX8cPtQKpFIL0))/Default.aspx

これの代わりに:

https://myurl.com/Default.aspx

これはPhoneGap childBrowser プラグインでのみ発生し、他のブラウザでは適切な場所に移動します。

エラーが表示された後400 bad request、自分のホームページを手動で参照すると、実際にサインインしており、Google からの単純なリダイレクトが失敗したことがわかります。

私の問題の修正方法または可能な回避策を知っている人はいますか?

解決:

returnToURLでパラメーターを指定する必要がありましたOpenIdRelyingParty.CreateRequestここに画像の説明を入力

4

2 に答える 2

1

この問題を解決するために:

  1. ASP.NET フォルダーがまだ存在しない場合は、プロジェクトに追加しApp_Browsersます (プロジェクトを右クリックし、[追加] -> [ASP.NET フォルダーの追加] -> [App.Browsers] をクリックします)。
  2. generic.browserApp.Browsers フォルダーに呼び出されるファイルを追加します。
  3. generic.browser ファイルで自動生成されたコードを次のように置き換えます。

    <browsers>
        <browser refID="Default">
            <capabilities>
                <capability name="cookies" value="true" />
            </capabilities>
        </browser>
    </browsers>
    

この問題は、フォーム認証の実行時に iPad や iOS などの iOS デバイスで妥当な頻度で発生します。ユーザーは次のエラーを受け取ります: Bad Request - Invalid URL. HTTP エラー 400。リクエスト URL が無効です。

于 2012-08-04T07:38:57.277 に答える
1

これは、ASP.NET の cookieless セッション サポート機能のようです。失敗したシナリオがセッション Cookie が拒否された場合で、web.config ファイルで有効になっている場合、ASP.NET は基本的に Cookie を URL に保存し、一種の仮想パスを作成すると思います。明らかに、これには何か問題があります。次の方法で問題を切り分けることをお勧めします。

  1. DotNetOpenAuth ロギングを有効にする
  2. ログイン試行全体のFiddler2トレースを収集する

...この迷路がどこから来ているのかを突き止めます。

于 2012-06-08T14:46:45.887 に答える