Localhost上的ASP.NET MVC Microsoft Live帐户身份验证

Ale*_*dru 5 c# asp.net oauth oauth-2.0 asp.net-mvc-4

我创建了一个空白的新ASP.NET MVC站点.

我在https://account.live.com/developers/上设置了一个应用程序端点,如下所示:

API设置:http://i.imgur.com/bIoV3x9.png API设置

应用程序设置和代码隐藏:http://i.imgur.com/P3KFyhV.png 应用程序设置和代码隐藏

我尝试启动我的网站,连接到https://localhost:44300/,单击"登录",然后单击"Microsoft",我得到一个页面,说明以下内容:

微软帐户

我们无法完成您的请求

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

但它重定向到我的URL是:

https://login.live.com/err.srf?lc=1033#error=invalid_request&error_description=The%20provided%20value%20for%20the%20input%20parameter%20 'REDIRECT_URI' %图20是%20not%20valid%第二十条% 20expected%20value%图20是%20' https://login.live.com/oauth20_desktop.srf "%20or%20A%20URL%20which%20matches%第二十条%20redirect%20URI%20registered%20for%20this%20client%20application

我相信redirect_uri无效.期望值是oauth20_desktop.srf的一些URI.我不知道世界上到底发生了什么/问题是什么.任何人都可以了解我必须做些什么来测试Microsoft帐户登录到我的localhost运行的MVC站点?

Leo*_*Leo 8

你的发现是正确的,微软不允许使用localhost redirect_uri,它在ASP.NET Documentations中有解释......

使用Facebook注册您的站点时,您可以为站点域提供"localhost",为URL提供"http:// localhost /",如下图所示.使用localhost可与大多数提供程序一起使用,但目前无法与Microsoft提供程序一起使用.对于Microsoft提供商,您必须包含有效的网站URL.

如果你想让它工作,你需要设置一个带有自定义主机头的IIS站点,这将要求你修改机器中的主机文件...假设你正在开发一台Windows机器当然

设置您的环境

  1. 打开IIS管理控制台并创建一个新站点
  2. 输入站点名称,应用程序池,物理路径以及最重要的主机标题....请参阅下面的屏幕截图

在此输入图像描述

  1. 单击"确定"以创建站点,然后确保站点和应用程序池都在运行
  2. 在"运行命令"实用程序中输入以下系统路径,%SystemRoot%\system32\drivers\etc以打开hosts文件所在的路径...通常C:\Windows\system32\drivers\etc
  3. 以管理员身份打开hosts文件,并添加与您设置的主机头匹配的条目...

    127.0.0.1 www.testsite.com

  4. 保存后,您可以打开浏览器窗口,通过键入来测试设置 http://www.testsite.com

  5. 如果它有效,那么您可以使用该网址与Microsoft OAuth API或任何其他提供商(如Google,Facebook,LinkedIn等)进行测试

  • 仅@Alexandru设置主机文件条目是不够的.您需要向站点添加与hosts文件中指定的条目匹配的自定义主机标头.我不知道你是否可以通过IIS Express实现这一点,因为我从不使用它...我总是在尽可能接近现场环境的环境中设置开发环境.因此,使用IIS 7/7.5,设置站点并添加主机头,它应该工作 (2认同)