【发布时间】:2017-08-09 00:50:07
【问题描述】:
我已修改 startup.Auth.cs 以便我可以添加范围。这是我所拥有的:
MicrosoftAccountAuthenticationOptions mo = new MicrosoftAccountAuthenticationOptions()
{
ClientId = "My Client ID",
ClientSecret = "My Client Secret",
};
app.UseMicrosoftAccountAuthentication(mo);
这允许我对用户进行身份验证。
我已尝试添加范围 wl.signin、wl.emails 和 wl.contacts_emails。但是,它们会导致 Microsoft 登录页面报告以下错误:AADSTS70011:为输入参数“范围”提供的值无效。 wl.signin、wl.emails、wl.contacts_emails 的范围无效。 openid 和 email 的范围组合似乎有效。但是,范围 openid 对于我正在尝试做的事情来说太过分了。也就是说,我认为向用户要求太多了。范围 email 本身不起作用。
这特别奇怪,因为 Visual Studio 设置的模板假定外部身份验证提供程序将提供电子邮件地址。
如何只获取用户的电子邮件?
对于上下文,我使用以下文档: https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference#openid-permissions 给人的印象是我希望 email 和 profile 包含在范围内。但是,它继续声明它们默认包含在内。
我正在尝试使用以下文档在我的 MVC 项目中实现外部身份验证:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins。
【问题讨论】:
-
这是一个 ASP.Net Web 应用程序(.Net 框架)。我将使用 ASP.Net Core Web 应用程序 (.Net Core) 来尝试整个过程。界面略有不同,即它使用 MicrosoftAccountOptions 而不是 MicrosoftAccountAuthenticationOptions。
标签: c# asp.net-mvc oauth owin