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
クエリ文字列フィールドの値を に設定できると書かれていますpopup
。display
残念ながら、 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 をカスタマイズすることはできないようです。
私の質問は、以前にこの問題に遭遇して解決した人はいますか? 何らかの方法でdisplay
URL に追加するために、パイプラインの他の場所でできることはありますか? Facebook の OAuth ダイアログのポップアップ バージョンを使用する必要があります。
委任ハンドラーを試してみましたが、パイプラインで生成された HTTP 401 をインターセプトしていることがわかりますが、HTTP 302 はインターセプトしません。
余談ですが、これを機能として要求する適切な場所はどこですか?