Настройка Facebook Login для asp.net core
Я настраиваю Facebook авторизацию для сайта, тестирую на Стейдж сервере. Сама система написана на asp.net core razore pages.
Есть два Facebook аккаунта:
- Владелец
Facebook Login App. Имеет настроенныйemailс доступом видно только мне. - Пользовательская учётная запись. Имеет настроенный
emailс доступом видно всем.
Для Facebook Login App настроены следующие доступы по вкладке Permitions and Features:
emailpublic_profile
Теперь о том, как настроена конфигурация FacebookAuthentication у меня в программе.
Middleware(все ключи валидные):
.AddFacebook(FacebookDefaults.AuthenticationScheme, options =>
{
options.AppId = configuration.GetSection(FacebookAuthenticationAppIdSection).Value;
options.AppSecret = configuration.GetSection(FacebookAuthenticationAppSecretSection).Value;
options.Scope.Add("email");
options.Fields.Add("email");
})
- При выборе авторизации через
Facebookпопадаем в этот контроллер:
public async Task<IActionResult> SignIn(string provider)
{
AuthenticationProperties properties = identityService.ConfigureExternalAuthenticationProperties(provider, Url.Action("ExternalAuthenticationProcess", "ExternalAuthentication"));
return new ChallengeResult(provider, properties);
}
- При подтверждении авторизации через учётную запись
Facebookвызывается этот код внутри сервиса:
ExternalLoginInfo? loginInfo = await signInManager.GetExternalLoginInfoAsync();
if (loginInfo is null)
{
return Error(UnexpectedError);
}
ClaimsPrincipal? principal = loginInfo.Principal;
if (principal is null)
{
return Error(UnexpectedError);
}
// ...
Суть в том, что при использовании аккаунта владельца Facebook Login App я получаю нужную мне Клайму email, хотя она имеет доступ "видно только мне". При использовании другой учётной записи, я не могу получить почту.
Вот какие Claims мне приходят для владельца:
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
Для другого пользователя:
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
- http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
То есть, приходится всё, кроме почты.
Как всё же мне получить почту при входе через Facebook?