Ich versuche, den Identityserver einzurichten, um mich mit Facebook einzuloggen. Alles funktioniert gut, außer ich kann keine der Benutzerinformationen von Facebook abrufen. Die mvc App wird erwartet, ein Vorname und Nachname Anspruch. Ich habe public_profile einen Bereich hinzugefügt, bekomme ihn aber nicht zurück.Externe Anmeldung mit Identity Server 3 - Festlegen des Vornamens von Facebook
Nach vielen Nachforschungen scheint es, als müsste ich einen UserService einrichten, bin aber nicht sicher, wie ich das machen soll.
Hilfe wäre sehr willkommen.
Hier sind mein Code den externen Anbieter im statup der idenity Server-Anwendung zu konfigurieren:
private void ConfigureIdenityProviders (IAppBuilder app, string signInAsType)
{
var facebookOptions = new Microsoft.Owin.Security.Facebook.FacebookAuthenticationOptions
{
AuthenticationType = "Facebook",
Caption = "Sign in with Facebook",
SignInAsAuthenticationType = signInAsType,
AppId = "xxxxxxxxxxxx",
AppSecret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
Provider = new Microsoft.Owin.Security.Facebook.FacebookAuthenticationProvider()
{
OnAuthenticated = (context) =>
{
// Problem here - there is no last_name returned
JToken lastname;
if (context.User.TryGetValue("last_name", out lastname))
{
context.Identity.AddClaim(new System.Security.Claims.Claim(IdentityServer3.Core.Constants.ClaimTypes.FamilyName, lastname.ToString()));
}
context.Identity.AddClaim(new System.Security.Claims.Claim("role", "Guest"));
return Task.FromResult(0);
}
}
};
facebookOptions.Scope.Add("public_profile");
facebookOptions.Scope.Add("email");
app.UseFacebookAuthentication(facebookOptions);
}