Hello堆栈溢出的朋友,这里需要一些帮助。我正在尝试编写一个基本的.NET应用程序,以便用户通过Facebook登录并捕获他们的电子邮件和生日。
我在Startup.auth.cs中使用:
var facebookAuthenticationOptions = new FacebookAuthenticationOptions()
{
AppId = "foo",
AppSecret = "bar",
};
facebookAuthenticationOptions.Scope.Add("email");
facebookAuthenticationOptions.Scope.Add("user_birthday");
facebookAuthenticationOptions.SignInAsAuthenticationType = Microsoft.Owin.Security.AppBuilderSecurityExtensions.GetDefaultSignInAsAuthenticationType(app);
app.UseFacebookAuthentication(facebookAuthenticationOptions);
然后我在我的控制器中使用:
if (user != null)
{
await SignInAsync(user, isPersistent: false);
//Get external user data...
var externalIdentity = await HttpContext.GetOwinContext().Authentication
.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
var email = externalIdentity.FindFirstValue(ClaimTypes.Email);
var birthday = externalIdentity.FindFirstValue(ClaimTypes.DateOfBirth);
return RedirectToLocal(returnUrl);
}
电子邮件在那里,但生日为空。到底是怎么回事?如何捕获生日和其他用户事件?
答案 0 :(得分:0)
使用externalIdentity.FindFirstValue("user_birthday");
。这就是你要求的主张。