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登录