[英]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
。
有人建议如何在验证时将电子邮件地址作为索赔吗?
配置Microsoft的范围。
var mo = new MicrosoftAccountAuthenticationOptions { Caption = "Live", ClientId = clientId, ClientSecret = clientSecret, }; mo.Scope.Add("wl.basic"); mo.Scope.Add("wl.emails"); app.UseMicrosoftAccountAuthentication(mo);
抓住电子邮件声明
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.