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



我正在使用VS2013中新的MVC 5模板随附的ASP.NET身份。我已经配置了外部登录提供商,因此人们可以使用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;

相关内容

  • 没有找到相关文章

最新更新