You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 12:40:54