如何从ASP.NET MVC获取完整的Facebook个人资料

时间:2017-04-02 12:57:07

标签: c# asp.net asp.net-mvc facebook-graph-api owin

我正在开发网络应用,我需要获取有关Facebook用户的完整信息。 OAUTH2登录成功完成。但在那之后,当我使用提供的访问令牌调用graph.facebook.api时,我只获得id,name和picture。

问题是如何从Facebook获取完整的用户个人资料?

在Startup.Auth.cs中我有以下代码:

var facebookAuthOptions = new FacebookAuthenticationOptions()
{
    AppId = "APP_ID_HERE",
    AppSecret = "APP_SECRET_HERE",
    Provider = new FacebookAuthenticationProvider()
    {
        OnAuthenticated = (context) =>
        {
            context.Identity.AddClaim(new System.Security.Claims.Claim("urn:facebook:accesstoken"
                                      , context.AccessToken
                                      , ClaimValueTypes.String
                                      , "Facebook"));
            context.Identity.AddClaim(new Claim("urn:facebook:email"
                                      , context.AccessToken
                                      , ClaimValueTypes.Email
                                      , "Facebook"));
            context.Identity.AddClaim(new Claim("urn:facebook:about"
                                      , context.AccessToken
                                      , ClaimValueTypes.String
                                      , "Facebook"));
            return Task.FromResult(0);
        }
    }
};

app.UseFacebookAuthentication(facebookAuthOptions);

在我的控制器中,我正在调用facebook API:

var apiRequestUri = new Uri("https://graph.facebook.com/v2.8/me?fields=email,name,about,picture&access_token=" + accessToken);

var webClient = new System.Net.WebClient();
var json = webClient.DownloadString(apiRequestUri);
var profile = JsonConvert.DeserializeObject<FacebookProfile>(json);

但我得到的只是身份证,姓名和照片。 当我在图形api控制台中尝试类似的查询时,我可以获得所需的所有信息。 欢迎任何建议! 提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我已通过为每个所需字段的facebookAuthOptions添加声明来解决此问题。用户批准请求的信息后,我可以使用授权步骤提供的令牌成功获得Facebook API的响应。