使用默认的 ASP.Net MVC 设置,如何使用 Microsoft 帐户登录?

Posted

技术标签:

【中文标题】使用默认的 ASP.Net MVC 设置,如何使用 Microsoft 帐户登录?【英文标题】:Using default ASP.Net MVC setup, how do I Sign in using a Microsoft Account? 【发布时间】:2014-04-23 12:54:09 【问题描述】:

为什么我不断收到“为输入参数'redirect_uri'提供的值无效。”?

我的网站托管在 Azure 中。我正在尝试通过 Microsoft 登录按钮登录。我并没有对默认的 ASP.Net MVC 开箱即用模板进行太多更改。我真正改变的只是取消注释 app.UseMicrosoftAccountAuthentication 行并添加 clientIdclientSecret

我的重定向 URL 是否设置不正确?

网站:http://mysite.azurewebsites.net

重定向网址:http://mysite.azurewebsites.net/

我在某处读到您需要以http://www.mysite.azurewebsites.net 的形式指定重定向 URL。任何人都可以确认或否认吗?在我当前的设置中,我不需要 www

我一直收到的错误是:

https://login.live.com/err.srf?lc=1033#error=invalid_request&error_description=The 为输入参数“redirect_uri”提供的值无效。预期值为“https://login.live.com/oauth20_desktop.srf”或与为此客户端应用程序注册的重定向 URI 匹配的 URL。&state=SomeLongPossiblyEncryptedString

此消息显示在尝试登录后返回的页面上:

微软帐户

我们无法完成您的请求

Microsoft 帐户遇到技术问题。请稍后再试。

2014 年 3 月 26 日更新:到目前为止还没有运气,这里是我的设置的一些屏幕截图,以防万一。 基本信息

API 设置

这是微软方面的问题还是我做错了什么?

【问题讨论】:

对于移动服务,我必须添加两个重定向网址;一个带有 jsut 域,另一个带有完整路径:service.azure-mobile.net/login/microsoftaccount @Lee_Nover 我尝试将其添加为另一个重定向(嗯,mysite.azurewebsites.net/login/microsoftaccount),但它不起作用。搜索项目时没有看到名为 microsoftaccount 的方法。 我刚刚尝试并删除了第二个 url (/login/microsoftaccount),但它停止了工作。添加回来,它的工作。您是否检查了“基本信息”中的应用程序徽标和隐私政策网址?在第 1506 行的 MobileServices.Web-1.1.3.js 中,有: var client = login.getMobileServiceClient(); var startUri = _.url.combinePathSegments(client.applicationUrl, loginUrl, provider);最终产生“service.azure-mobile.net/login/microsoftaccount”,并作为回调 uri 传递给身份验证提供程序。 您会考虑尝试一种更简单的社交身份验证包吗? github.com/SimpleAuthentication/SimpleAuthentication nuget.org/packages?q=simpleauthentication) 的 NuGet 包 【参考方案1】:

从默认的 MVC 中,重定向 URL 对我有用(大约 5 分钟前刚刚测试过)

http://testcrap.azurewebsites.net/signin-microsoft

我找到的所有文档都说要使用

http://testcrap.azurewebsites.net/login/microsoftaccount

但这对我不起作用... signin-microsoft 可以

或者,如果这不起作用,则使用诸如 firebug 之类的东西来查看对 oauth 提供者的请求是什么样的,然后该请求中的任何重定向URI 都是您需要使用的。..

【讨论】:

非常感谢这拯救​​了我的一天。当我从 Windows 商店应用程序尝试时也是如此。 :)【参考方案2】:

微软似乎再次更改了网址。这对我有用

.auth/login/microsoftaccount/callback

我的重定向网址是 https://yyyyyyyy.azurewebsites.net/.auth/login/microsoftaccount/callback

要获取此 url,请使用 Fiddler 或任何 http 调试工具并查找对 login.live.com 的请求。 redirect_url 在查询字符串中。

https://login.live.com/oauth20_authorize.srf?client_id=00000000551716B9&redirect_uri=https%3A%2F%2Fyyyyyyyyyy.azurewebsites.net%2F.auth%2Flogin%2Fmicrosoftaccount%2Fcallback&response_type=code&scope=wl.basic+wl.offline_access+wl.signin+wl.birthday+wl.calendars+wl.calendars_update+wl.contacts_birthday+wl.contacts_create+wl.contacts_calendars+wl.contacts_photos+wl.contacts_skydrive+wl.emails+wl.events_create&state=nonce%3Dfe7e6b678b8844f48f079cceadf1f426_20151206145117%26redir%3D%2F

【讨论】:

【参考方案3】:

重定向 URI 是“SSL 敏感的”,您可能总是想要 SSL 版本。

【讨论】:

【参考方案4】:

对于 Web 应用程序,您需要在 Live Connect 开发者中心设置重定向 url。

在 API 设置->您必须设置的重定向 URL:

http://www.yourdomain.com/signin-microsoft

希望对你有帮助:)

【讨论】:

【参考方案5】:

由于我还需要 3 个声望点才能对您的帖子发表评论,所以我必须在这里提出。对此感到抱歉。 您是在真实域上尝试还是从本地主机测试时遇到此错误?

如果是第二种情况,您需要在本地主机文件中为指向 127.0.0.1 的虚拟主机名设置 DNS 条目,并在实时注册时使用该虚拟主机名。此外,它需要 IIS,而不是 IIS Express。

不确定这是否是一种干净的方法,也不确定它是否完整,但这是我在尝试新的 ASP.NET 身份提供程序时得到的最远距离。可悲的是,官方文档中只有一个示例显示了如何将其与 google 一起使用... 我也希望得到一个明确的答案。

【讨论】:

我使用的是真实域名。一种由 Microsoft (mysite.azurewebsites.net) 提供。【参考方案6】:

您需要在Live Connect Developer Center 中提供重定向网址。我附上了截图。这是应用程序验证的一部分,以防止恶意应用程序。

【讨论】:

感谢您确认我需要设置重定向 URL。不幸的是,我仍然收到“为输入参数'redirect_uri'提供的值无效。”消息。 您确定发出请求的 URL 与配置屏幕中的 URL 完全匹配吗?你没有使用 HTTPS? 我试过mysite.azurewebsites.net/Account/Login,它产生了同样的错误。这是具有 Microsoft 登录控件的页面。我还没有使用 HTTPS。 (我还没有做到这一点,这是第 1 步。) 关闭“移动或桌面客户端应用”设置。 我在“移动或桌面客户端应用程序”打开和关闭的情况下进行了尝试。结果相同。 “我们无法完成您的请求 Microsoft 帐户遇到技术问题。请稍后再试。”

以上是关于使用默认的 ASP.Net MVC 设置,如何使用 Microsoft 帐户登录?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET CORE 5.0 MVC 中将登录设置为默认路由

ASP.Net 5 MVC 6,如何使用共享 Error.cshtml 作为默认错误响应

ASP.NET CORE MVC 选择标签助手 - 如何在不使用 ModelView 的情况下设置选定值

ASP.NET Core MVC:设置身份 cookie 过期

如何在 ASP.NET MVC 中为有效字段设置绿色边框

如何正确处理 ASP.NET MVC 中的 404?