ASP.NET Core 3.1-从Facebook身份验证获取用户配置文件图像

问题描述

过去几天,我一直在尝试打开/关闭,以使我的应用程序可以作为身份提供者与Facebook一起使用。通过遵循在线提供的各种教程,它或多或少地起作用,但是,在尝试获取用户图像配置文件时,我也陷入了困境。在某些情况下,我可以在某种情况下看到user_picture,但是经过多次修订并遵循在线上各种分散的教程之后,我仍然受阻。

那么任何人都可以向我指出完整的指南,或者在哪里可以找到相关资源,还包括来自Facebook的用户个人资料图片?

代码: Startup.cs

public void ConfigureServices(IServiceCollection services)
{
        services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
        services.AddDefaultIdentity<User>(options => options.SignIn.RequireConfirmedAccount = true).AddEntityFrameworkStores<ApplicationDbContext>();
        services.AddControllers(config =>
        {
            var policy = new AuthorizationPolicyBuilder()
                             .RequireAuthenticatedUser()
                             .Build();
            config.Filters.Add(new AuthorizeFilter(policy));
        });
        services.AddControllersWithViews();
        services.AddRazorPages();

        services.AddAuthentication().AddFacebook(faceBookOptions =>
        {
            faceBookOptions.AppId = "___";
            faceBookOptions.AppSecret = "____";
        });
        ...
 }

User.cs:

public class User : IdentityUser<string>
{
    public string ImageUrl { get; set; }
    public string FullName { get; set; }

    public User()
    {
        Id = Guid.NewGuid().ToString();
    }

    public User(string userName) : this()
    {
        this.UserName = userName;
    }
}

AccountController.cs

public class AccountController : Controller
{
    public IActionResult Index()
    {
        return View();
    }

    [AllowAnonymous]
    [HttpPost]
    public async Task<IActionResult> ExternalLoginCallback(string returnUrl)
    {
        string str = "";

        return View();
    }

    [AllowAnonymous]
    [HttpPost]
    public async Task<IActionResult> FacebookLoging(string returnUrl)
    {
        string str = "";

        return View();
    }
}

我的理解是魔术发生在AccountController内,但是我无法击中任何断点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)