如何从ASP.NET MVC获取完整的Facebook个人资料
问题描述:
我正在开发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控制台中尝试类似的查询时,我可以获取所有需要的信息。 欢迎任何建议! 预先感谢您的帮助!
答
我已经解决了这个问题,为每个所需字段添加了对facebookAuthOptions
的声明。在用户批准请求的信息后,我可以使用授权步骤中提供的令牌成功获得Facebook API的响应。