在ASP.NET身份中获取使用Microsoft帐户进行身份validation的用户的电子邮件
我正在使用VS2013中新的MVC 5模板附带的ASP.NET标识。 我已配置外部登录提供商,以便人们可以使用Google,Facebook或Microsoft注册。 但是,我仍然希望获得人们的电子邮件地址(例如,用于通知,更新等)。
默认情况下, app.UseGoogleAuthentication()
也会请求用户的电子邮件地址。 对于Facebook,我创建了一个新的FacebookAuthenticationOptions
类实例,并添加了以下范围: facebook.Scope.Add("email")
。 这也有效。
我在使用Microsoft帐户的人收到电子邮件时遇到问题。 MicrosoftAccountAuthenticationOptions
还具有Scope
属性,但添加email
似乎不起作用。 在文档中,我看到有一个范围wl.emails
但它返回一组电子邮件地址,我不确定这是否等同于Facebook的email
。
有人建议如何在validation时将电子邮件地址作为索赔吗?
-
配置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;
- 将ASP.NET生成的pdf byte 显示到网页而不保存文件
- ASP.NET中的全局变量
- 从局部视图中获取当前控制器和操作
- 为什么AppDomain.CurrentDomain.GetAssemblies()在某些条件下不返回Global.asax中的依赖程序集?
- 在aspx页面中显示DataTable信息
- 此程序集由比当前加载的运行时更新的运行时构建,无法加载
- UpdatePanel上的AsyncPostBackTrigger和PostBackTrigger之间的区别?
- FileUpload – 如果文件名存在,则在名称末尾的括号之间连接一个数字
- 一个模式弹出窗口,没有使用ajax,更新面板,jquery或javascript-令人惊讶的是这似乎工作