任何人都可以提供一个如何从Facebook检索个人资料图片网址的示例吗? 不知怎的,我不能这样做。我可以检索名字,姓氏,电子邮件,性别,它应该允许检索个人资料图片,但它不是。在索赔清单中没有图片这样的东西。 我找不到任何例子。这是我的代码:
Startup.Auth.cs
var x = new FacebookAuthenticationOptions();
x.Scope.Add("email");
//x.Scope.Add("picture");
x.AppId = "*";
x.AppSecret = "***";
x.Provider = new FacebookAuthenticationProvider()
{
OnAuthenticated = async context =>
{
context.Identity.AddClaim(new System.Security.Claims.Claim("FacebookAccessToken", context.AccessToken));
foreach(var claim in context.User)
{
var claimType = string.Format("urn:facebook:{0}", claim.Key);
string claimValue = claim.Value.ToString();
if(!context.Identity.HasClaim(claimType, claimValue))
context.Identity.AddClaim(new System.Security.Claims.Claim(claimType, claimValue, "XmlSchemaString", "Facebook"));
}
}
};
x.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie;
app.UseFacebookAuthentication(x);
编码我如何检索一些数据:
var loginInfo = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie);
var firstNameClaim = loginInfo.Claims.First(c => c.Type == "urn:facebook:first_name");
var lastNameClaim = loginInfo.Claims.First(c => c.Type == "urn:facebook:last_name");
var gender = loginInfo.Claims.First(c => c.Type == "urn:facebook:gender");
有什么想法吗?我使用Facebook SDK for .NET实现了所需的结果,但我很好奇如何在不使用Facebook SDK for .NET的情况下实现相同的结果。希望社区将在这方面提供帮助。
答案 0 :(得分:1)
看起来您无法将图片网址作为带参数的对象,因为每次用户更改其个人资料图片时图片网址都会发生变化,因此存储静态网址没有任何意义。
对于我的解决方案,我写了一个方法来获取个人资料图片的动态网址,这里是代码:
private string GetFacebookProfilePicture(ClaimsIdentity externalInfoSoruce) {
var facebookUserID = externalInfoSoruce.Claims.First(c => c.Type == "urn:facebook:id").Value;
string profilePicturePath = string.Format("http://graph.facebook.com/{0}/picture?type=large", facebookUserID);
return profilePicturePath;
}
现在,每当我想向用户展示他的个人资料图片时,我都可以将该链接插入到<img>
src参数中。每次用户登录时,照片都会自动更新。
答案 1 :(得分:0)
不确定这是否是您应该这样做的方式。但是,http://graph.facebook.com/FACEBOOKID/picture提供了Facebook个人资料图片,因此您只需获取用户的ID并将其交换到该网址即可。
例如,我的Facebook ID是729196216,所以如果你请求http://graph.facebook.com/729196216/picture,你会得到我丑陋的杯子。 :)