1

我一直在尝试为我的网站实施 Microsoft 帐户的 OAuth v2。它目前处于开发阶段,因此正在本地主机上进行测试。该网站是一个 ASP.NET Core MVC 5 应用程序。

我已按照此处的教程为 Twitter、Google 和 Facebook 帐户实施 OAuth。我发现这很简单,只有几个小问题,我可以通过简单的谷歌搜索来解决。

但是,我花了几天时间试图了解在我的网站上尝试使用 Microsoft 帐户身份验证时发生了什么。

我在此处观看了有关在 Microsoft 应用注册门户中注册应用程序的视频。在视频的第 6 分钟左右,一个简短的演示展示了如何设置应用程序。您可以在以下屏幕截图中看到我的应用程序详细信息:

在此处输入图像描述

在大约 7.5 分钟的视频中,有一小部分解释了如何通过构建 URL 字符串来测试应用程序。

在向浏览器提交查询字符​​串时,页面会按预期重定向到我的应用程序页面,如您在此处看到的:

Microsoft 帐户登录页面

在这种情况下,我已经准备好登录到我的 Microsoft Outlook 帐户。如果我没有登录,系统会提示我登录 Microsoft 帐户。登录,在这种情况下,选择我已经登录的 Outlook 帐户会导致页面被重定向回我的站点,如下面的屏幕截图所示,但是由于该站点没有发送请求,因此它不期望发送回用于登录的令牌,所以什么都没有发生。这是预期的行为,此时我只是在测试应用程序端点是否按预期工作。

[重定向回网站[5]

下一阶段是测试我网站的功能。这是我总是有问题的地方。要激活 Microsoft 帐户登录的 OAuth 功能,只需在我的网站 App_Start 文件夹中的 Startup.Auth.cs 文件中取消注释几行代码,并传入 Apps ClientKey 和 ClientSecret 值,如以下代码所示片段:

app.UseMicrosoftAccountAuthentication(
            clientId: System.Configuration.ConfigurationManager.AppSettings["MicrosoftOAuthClientID"],
            clientSecret: System.Configuration.ConfigurationManager.AppSettings["MicrosoftOAuthClientSecret"]);

这段代码基本上在登录页面上添加了一个小按钮,允许您选择 Microsoft 登录,如下所示:

[Microdoft 帐户登录按钮[6]

当我单击 Microsoft 按钮时,我收到以下错误页面:

错误页面

并且返回的查询字符串包含以下内容:

https://login.live.com/err.srf?lc=2057#error=unauthorized_client&error_description=The+client+does+not+exist.+If+you+are+the+application+developer%2c+configure+a +new+application+through+the+application+management+site+at+https://apps.dev.microsoft.com/.&state=JMxMRuKaOiYWCQw_Uqkhv3gLQn3ULlkG2miM4ymcHhTK5niXVQl5n4L0a6VoWeEKmFM7T1ciU2oQAh26_Y0i2DMjdt6BOAtpjNeMaSpBq4wbCjva9lOuctOUIWwoFdTEGvxJ4M904lUsoudd9e9cYi6eiH3JF81HB5ouQSus2ddE1sVUQLw-YB1GjUL79y2muFaBFIOIOk75oCV2IxX4cFO2rJU04K9Se6gxu698WpzR8taUB2c6tK9u0dBisckhavf0IvKB9dWQq-IVwQgvaA

有谁知道为什么或发生了什么????

现在我已经阅读了我的许多搜索中的几个,同时试图了解当我尝试从我的站点而不是直接在浏览器中测试我应该拥有的 URL 测试应用程序时发生了什么

/登录-微软

在应用门户配置中附加到我的重定向 URL。我已经用我设置的重定向 URL 进行了测试,但这不起作用。我收到一个 HTTP ERROR 500 发回,因为页面 signin-microsoft 不存在。所以这不是我的问题。

如果有人遇到同样的问题并解决了,请帮忙。

编辑:我应该提到我最初是使用本地 IISExpress 尝试此操作,但在阅读了一些帖子后说它只能在 IIS 上完成,所以我在本地将我的网站发布到 IIS。

4

0 回答 0