8

を使用してMicrosoft.Web.WebPages.OAuthいます。登録できました、、、、、Google_FacebookTwitterStack ExchangeMyOpenID

今、私は追加しようとしてMicrosoft Liveいるので、登録しました:

OAuthWebSecurity.RegisterMicrosoftClient("applicationID", "key");

そして呼ばれた

OAuthWebSecurity.RequestAuthentication("microsoft", Url.Action("Authorization", new { returnUrl = "/" }));

この時点まで、すべてが正常に機能しており、ログイン ページにリダイレクトされます。問題は、私が戻ってきたときです

OAuthWebSecurity.VerifyAuthentication();

それは言います:

リモート サーバーがエラーを返しました: (400) 不正な要求。

どうすればいいですか?

4

2 に答える 2

1

私も同じ問題を抱えていました。多くの調査の後、コメント付きのこのソースコードに出くわしました:

// Only OAuth2 requires the return url value for the verify authenticaiton step

これは、 を呼び出すときにVerifyAuthentication、oauth2 プロバイダー (この場合は Microsoft Live ID プロバイダー) による検証のために戻り URL を渡すオーバーロードを使用する必要があることを意味します。

案の定、asp.net Web サイトのウォークスルーを掘り下げると、コールバックのアクションからの URL として、実際にリターン URL が返されていることがわかりました。

したがって、代わりに:

OAuthWebSecurity.VerifyAuthentication();

必要なもの:

var returnUrl = Url.Action("Authorization", new { returnUrl = "/" })
OAuthWebSecurity.VerifyAuthentication(returnUrl);

リターン URL は、メソッドで前に指定したものとまったく同じである必要がありますRequestAuthentication

于 2013-02-25T00:29:16.673 に答える
0

使用しているリダイレクト ドメインは何ですか? (これを行っているときに)実際のドメイン名を指定したため、ドメイン名がローカルサイトを指すようにする必要があることがわかりました。

回避策として、ホスト ファイルにエントリを追加して、ドメインが 127.0.0.1 になるようにしました (つまり、ローカルでデバッグして実行していたためです)。

于 2012-09-30T23:28:08.433 に答える