使用MVC 5从Facebook获取user_birthday

时间:2014-04-05 22:30:33

标签: asp.net-mvc facebook oauth

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);
    }

电子邮件在那里,但生日为空。到底是怎么回事?如何捕获生日和其他用户事件?

1 个答案:

答案 0 :(得分:0)

使用externalIdentity.FindFirstValue("user_birthday");。这就是你要求的主张。