8

我正在使用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) 错误请求。

我需要做什么?

4

2 回答 2

1

我有同样的问题。经过大量研究,我发现了这段带有注释的源代码:

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

这意味着当您调用 时VerifyAuthentication,您必须使用传递返回 url 的重载以供 oauth2 提供程序(在本例中为 Microsoft Live ID 提供程序)进行验证。

果然,当我在 asp.net 网站上浏览演练时,我发现他们确实在传回返回 url,作为回调动作的 url。

所以而不是:

OAuthWebSecurity.VerifyAuthentication();

你需要:

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

返回 url 应该与您之前在RequestAuthentication方法中指定的完全匹配。

于 2013-02-25T00:29:16.673 回答
0

您使用的重定向域是什么?我发现(这样做时),由于我已经指定了我的实际域名,我需要让域名指向本地站点。

为了解决这个问题,我在 hosts 文件中添加了一个条目,将我的域指向 127.0.0.1(即,因为我正在本地调试和运行)。

于 2012-09-30T23:28:08.433 回答