2017-04-02 79 views
0

我正在开发Web应用程序,我需要获取有关Facebook用户的完整信息。 OAUTH2登录成功完成。但之后,当我拨打graph.facebook.api使用提供的访问令牌时,我只能得到id,名称和图片。如何从ASP.NET MVC获取完整的Facebook个人资料

问题是我怎样才能从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); 

但我得到的是只有ID,名称和图片。 当我在图形api控制台中尝试类似的查询时,我可以获取所有需要的信息。 欢迎任何建议! 预先感谢您的帮助!

回答

0

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

相关问题