Я пытаюсь настроить сервер идентификации, чтобы иметь возможность войти в систему через Facebook. Все работает нормально, за исключением того, что я не могу получить какую-либо информацию о пользователе из facebook. Ожидается, что приложение mvc заявит имя и фамилию. Я добавил область в public_profile, но не получил ее обратно.
После многих исследований кажется, что мне может понадобиться настроить UserService для этого, но я не уверен, как это сделать.
Помощь будет принята с благодарностью.
Вот мой код для настройки внешних провайдеров в настройке приложения сервера идентификации:
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);
}