0

Microsoft.Owin.Security.Facebook 3.0.1 NuGet パッケージを使用して、Facebook 認証を Web API 2.2 アプリケーションに追加しています。ユーザーがログインしようとすると、Microsoft のミドルウェアが次のような URL を使用して Facebook の OAuth ダイアログにリダイレクトするようにコードを動作させています。

https://www.facebook.com/dialog/oauth?response_type=code&client_id=<omitted>&redirect_uri=<omitted>&scope=&state=<omitted>

結果の HTTP 302 で、Facebook のポップアップ固有のバージョンの認証ダイアログをレンダリングする必要があります。Facebook のドキュメントには、displayクエリ文字列フィールドの値を に設定できると書かれていますpopupdisplay残念ながら、 Microsoft の Facebook ミドルウェアにはの設定がないようです。実際、内部Microsoft.Owin.Security.Facebook.FacebookAuthenticationHandlerクラスを逆コンパイルすると、次のコードが見つかりました。

string redirectUri = this.get_Options().AuthorizationEndpoint + "?response_type=code&client_id=" + Uri.EscapeDataString(this.get_Options().AppId) + "&redirect_uri=" + Uri.EscapeDataString(stringToEscape1) + "&scope=" + Uri.EscapeDataString(stringToEscape2) + "&state=" + Uri.EscapeDataString(stringToEscape3);

認証ハンドラーによって生成された URL をカスタマイズすることはできないようです。

私の質問は、以前にこの問題に遭遇して解決した人はいますか? 何らかの方法でdisplayURL に追加するために、パイプラインの他の場所でできることはありますか? Facebook の OAuth ダイアログのポップアップ バージョンを使用する必要があります。

委任ハンドラーを試してみましたが、パイプラインで生成された HTTP 401 をインターセプトしていることがわかりますが、HTTP 302 はインターセプトしません。

余談ですが、これを機能として要求する適切な場所はどこですか?

4

1 に答える 1