Facebook认证返回小尺寸个人资料图片,如何获取大尺寸图片?
解决Facebook认证获取大尺寸个人资料图片的问题
默认请求picture字段时,Facebook Graph API会返回50×50的小尺寸头像。要获取大尺寸图片,只需在请求字段时指定尺寸参数即可,有两种方式可选:
方式一:自定义宽高尺寸
修改options.Fields的添加逻辑,给picture字段加上width和height参数,按需设置具体数值(最大支持2048×2048):
options.Fields.Add("picture.width(200).height(200)");
方式二:使用预设尺寸类型
Facebook提供了预设的尺寸类型,直接指定type参数即可:
// 可选值:large(约200×200)、medium(约100×100)、small(约50×50) options.Fields.Add("picture.type(large)");
修改后,OnCreatingTicket中的逻辑不需要变动,获取到的profileImg就是对应尺寸的图片地址了。
完整修改后的代码示例:
builder.Services.AddAuthentication(options => { options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme; }) .AddFacebook(options => { options.AppId = "xxxx"; options.AppSecret = "xxxx"; // 二选一:自定义宽高或使用预设类型 options.Fields.Add("picture.width(200).height(200)"); // options.Fields.Add("picture.type(large)"); options.Events = new OAuthEvents { OnCreatingTicket = (context) => { ClaimsIdentity identity = (ClaimsIdentity)context.Principal.Identity; string profileImg = context.User.GetProperty("picture").GetProperty("data").GetProperty("url").ToString(); identity.AddClaim(new Claim("image", profileImg)); return Task.CompletedTask; } }; });
内容的提问来源于stack exchange,提问作者Shazoo
相关产品推荐
相关产品推荐

