我正在开发网络应用,我需要获取有关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控制台中尝试类似的查询时,我可以获得所需的所有信息。 欢迎任何建议! 提前感谢您的帮助!
答案 0 :(得分:0)
我已通过为每个所需字段的facebookAuthOptions
添加声明来解决此问题。用户批准请求的信息后,我可以使用授权步骤提供的令牌成功获得Facebook API的响应。