2017-02-21 10 views
0

新しいASP.NETコアアプリケーションからFacebookにユーザーをサインします。私はいくつかの理由でSDKを使用していません。すべてがうまくいっている。ユーザーをFacebookのサインオンページにリダイレクトします。 。Facebookのユーザーがサインインが、私は、リダイレクト後にブラウザからコピーし、次のURI文字列にリダイレクトします。ASP.NETコア - Facebookサインオンのリダイレクトで送信されたハッシュ文字(#)が問題を引き起こしています

http://localhost:5000/signonok?#state=testsession&access_token=bbbbtokeneeee&expires_in=510000 

signonokControllerはアクティブますが、クエリのコレクションは空で、QueryStringには「?」。文字列のハッシュ文字(#)がASP.NETにさらに解析を停止させているように見えます。私は数時間にわたってHttpContextの周りをうかがい、状態、access_tokenまたはexpires_inのキー値のペアを見つけることができません。

エラーはスローされていないか、ログ出力されません。

おそらく、自分のミドルウェア機能をパイプラインに挿入することで、情報にアクセスしたり、Uriを再フォーマットすることができたと思いました。疑わしいところに私は同じ結果を得ました。

Facebookの回答を変更するよりも、私の側でこの問題を回避する方が簡単だと思います。

Javaスクリプトは、ここでは関係のないいくつかの理由から、この場合は避けたいものです。

この#文字の処理方法についてのご意見はありますか?私はそれが放出される原因となった何か間違ったことをしたか、パイプラインでUriをどのように消費するかを理解しなければならない。

乾杯...

答えて

0

あなたはRawUrlプロパティを使用して、元の、未解析のURLを取得することができます。そこから次のことができます。

  1. クレンジングURLを渡し、自己リダイレクトを#記号を削除し、コードのビットと残りの引数を自分で解析し、または

  2. 問題。サーバーがリダイレクトを受信すると、通常の手段を使用してクエリ文字列のパラメータにアクセスできます。

+0

お返事ありがとうございます。これまでのところ喜びはありません。 Microsoft.AspNetCore.Http.HttpContextにRawUrlプロパティはありません。 Microsoft.AspNetCore.Http.Extensions.UriHelper.GetEncodedUrl(this.Request);戻り値:http:// localhost:5000/signonOk? – BigTFromAZ

1

は、文字列のハッシュ文字(#)が、さらに解析を停止するようにASP.NETを引き起こしているように思われます。

URLのハッシュ部分は、でもサーバーにを送信しません。 です。ここでコードを解析するものはありません。

Facebookの回答を変更するよりも、私の側でこの問題を回避する方が簡単だと思います。

あなたのログインダイアログの呼び出しでresponse_typeの正しい値を渡すされなければならないすべて、https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#login参照:

response_type
は、応答データが含まれるかどうかを決定したときにバックへのリダイレクトアプリケーションが発生するのは、URLパラメータまたはフラグメントです。

+0

ありがとうございます。私はFiddlerを使って昨夜これを考え出しましたが、あまりにも疲れて投稿できませんでした。レスポンスタイプを「コード」に変更し、FacebookがURLの断片化をやめました。また、 "コード"をトークンに変換するために追加のHTTP POST呼び出しを行ったことを意味します。大したことではなく、より多くの応答時間と私は少し良いセキュリティを疑う。 – BigTFromAZ

関連する問題