使っています Microsoft.Web.WebPages.OAuth
。登録できました Google
, Facebook
, Twitter
, Stack Exchange
, MyOpenID
...
今私は追加しようとしています Microsoft Live
、だから私は登録しました:
OAuthWebSecurity.RegisterMicrosoftClient("applicationID", "key");
と呼ばれる
OAuthWebSecurity.RequestAuthentication("microsoft", Url.Action("Authorization", new { returnUrl = "/" }));
この時点で、すべてが正常に機能しているので、ログインページにリダイレクトされます。問題は私が戻ってきたときです
OAuthWebSecurity.VerifyAuthentication();
それは言う:
リモートサーバーがエラーを返しました:(400)Bad Request。
私は何をしなければならないのですか?
回答:
回答№1は1私も同じ問題を抱えていました。たくさんの研究の末、私は出くわしました ソースコードのこのビット コメント付き:
// Only OAuth2 requires the return url value for the verify authenticaiton step
これは、あなたが電話するとき VerifyAuthentication
、oauth2プロバイダー(この場合はMicrosoft Live IDプロバイダー)による検証のために、戻りURLを渡すオーバーロードを使用する必要があります。
案の定、私が掘り下げるとき asp.netWebサイトのウォークスルー、コールバックのアクションからのURLとして、実際に戻りURLを返していることがわかりました。
だから代わりに:
OAuthWebSecurity.VerifyAuthentication();
必要なもの:
var returnUrl = Url.Action("Authorization", new { returnUrl = "/" })
OAuthWebSecurity.VerifyAuthentication(returnUrl);
返されるURLは、前に指定したものとまったく同じである必要があります。 RequestAuthentication
方法。
回答№2の場合は0
使用しているリダイレクトドメインは何ですか? (これを行うと)実際のドメイン名を指定したので、ドメイン名がローカルサイトを指すようにする必要があることがわかりました。
回避するために、hostsファイルにエントリを追加して、ドメインが127.0.0.1を指すようにしました(つまり、デバッグしてローカルで実行していたため)。