asp.net-mvc – 访问OAuth中的电子邮件地址ExternalLoginCallbac
| 参见英文答案 > 
 Why new fb api 2.4 returns null email on MVC 5 with Identity and oauth 2?5个答案使用Facebook API v2.3,如果设置了以下设置,用户的电子邮件地址将返回到ExternalLoginCallback; 
  
  
  app.UseFacebookAuthentication(new FacebookAuthenticationOptions
{
    AppId = "XXX",AppSecret = "XXX",Scope = { "email" }
});但是,任何只能针对v2.4(7月8日发布)的应用程序不再将电子邮件地址返回到ExternalLoginCallback。 我认为这可能与here所列的v2.4变更有关; 
 如何才能立即访问此电子邮件地址? 解决方法
 要解决这个问题,我不得不从nuget安装 
 Facebook SDK for .NET,并分别查询电子邮件地址。 
  
  在ExternalLoginCallback方法中,我添加了一个条件来填充Facebook Graph API中的电子邮件地址; var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
    return RedirectToAction("Login");
}
// added the following lines
if (loginInfo.Login.LoginProvider == "Facebook")
{
    var identity = AuthenticationManager.GetExternalIdentity(DefaultAuthenticationTypes.ExternalCookie);
    var access_token = identity.FindFirstValue("FacebookAccessToken");
    var fb = new FacebookClient(access_token);
    dynamic myInfo = fb.Get("/me?fields=email"); // specify the email field
    loginInfo.Email = myInfo.email;
}并获得FacebookAccessToken我扩展了ConfigureAuth; app.UseFacebookAuthentication(new FacebookAuthenticationOptions
{
    AppId = "XXX",Scope = { "email" },Provider = new FacebookAuthenticationProvider
    {
        OnAuthenticated = context =>
        {
            context.Identity.AddClaim(new System.Security.Claims.Claim("FacebookAccessToken",context.AccessToken));
            return Task.FromResult(true);
        }
    }
});(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
- asp.net – PushStreamContent没有发送最终的零长度块来表示
- 使用jackson将asp.net / MS专有的json Dateformat转换为jav
- ASP.net页面上的表单标签
- asp.net-mvc – 是否有一个用于ASP.NET MVC的玉模板引擎?
- tsql – “无法更改具有Command对象作为其源的Recordset对象
- asp.net – 来自TextBox的ActionLink routeValue
- asp.net-mvc – 默认的AccountController示例何时更改?
- asp.net-mvc – 在回发数据时,MVC如何填充模型
- asp.net – 将初始空行插入到选择列表MVC LINQ SQL中
- .net – 用Linkedin登录
