繁体   English   中英

在ASP.NET身份中获取使用Microsoft帐户进行身份验证的用户的电子邮件

[英]Get E-mail of User Authenticated with Microsoft Account in ASP.NET Identity

我正在使用VS2013中新的MVC 5模板附带的ASP.NET Identity。 我已配置外部登录提供商,以便人们可以使用Google,Facebook或Microsoft注册。 但是,我仍然希望获得人们的电子邮件地址(例如,通知,更新等)。

默认情况下, app.UseGoogleAuthentication()也会请求用户的电子邮件地址。 对于Facebook,我创建了一个新的FacebookAuthenticationOptions类实例,并添加了以下范围: facebook.Scope.Add("email") 这也有效。

我在使用Microsoft帐户的人收到电子邮件时遇到问题。 MicrosoftAccountAuthenticationOptions还具有Scope属性,但添加email似乎不起作用。 文档中,我看到有一个范围wl.emails但它返回一组电子邮件地址,我不确定这是否等同于Facebook的email

有人建议如何在验证时将电子邮件地址作为索赔吗?

  1. 配置Microsoft的范围。

     var mo = new MicrosoftAccountAuthenticationOptions { Caption = "Live", ClientId = clientId, ClientSecret = clientSecret, }; mo.Scope.Add("wl.basic"); mo.Scope.Add("wl.emails"); app.UseMicrosoftAccountAuthentication(mo); 
  2. 抓住电子邮件声明

     var identity = await AuthenticationManager.AuthenticateAsync(DefaultAuthenticationTypes.ExternalCookie); var emailClaim = identity.Identity.FindFirst(ClaimTypes.Email); 

希望这对你有所帮助。

app.UseMicrosoftAccountAuthentication(new   MicrosoftAccountAuthenticationOptions()
        {
            ClientId = "Your_client_id",
            ClientSecret = "your_client_secret_key",
            Scope = { "wl.basic", "wl.emails" }
        });

并收到电子邮件

 var externalIdentity = HttpContext.GetOwinContext().Authentication.GetExternalLoginInfoAsync();

string email=externalIdentity.Result.Email;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM