Search code examples
facebookauthenticationasp.net-coreclaims

ASP.NET Core Facebook Authentication Middleware user picture


I'm trying to retrieve user profile picture with Facebook Authentication middleware in ASP.NET Core 1.0. I have managed to add these configurations to make the user picture availble

app.UseFacebookAuthentication(new FacebookOptions()
        {
            AppId = Configuration["Authentication:Facebook:AppId"],
            AppSecret = Configuration["Authentication:Facebook:AppSecret"],
            Scope = { "public_profile" },
            Fields = { "picture" }
        });

and to retrieve data

var email = info.Principal.FindFirstValue(ClaimTypes.Email);

and

var userName = info.Principal.FindFirstValue(ClaimTypes.GivenName);

But How can I now retrieve user picture as there is not Claim Type for it?


Solution

  • As Set said in his answer you can get the picture using the Facebook Graph API like this https://graph.facebook.com/{user-id}/picture.

    Example code :

    var info = await _signInManager.GetExternalLoginInfoAsync();
    var identifier = info.Principal.FindFirstValue(ClaimTypes.NameIdentifier); 
    var picture = $"https://graph.facebook.com/{identifier}/picture";
    

    You might want to check if info is not null and if info.LoginProvider is facebook.