код выглядит следующим образомWeb API facebook, электронная почта требование возвращает нуль
запуска AUTH:
app.UseFacebookAuthentication(new FacebookAuthenticationOptions
{
AppId = "xxx",
AppSecret = "xxx",
BackchannelHttpHandler = new FacebookBackChannelHandler(),
UserInformationEndpoint = "https://graph.facebook.com/v2.4/me?fields=id,name,email,first_name,last_name,location",
Scope = { "email" }
});
в accountcontroler RegisterExternal классе я называю следующее:
вар Информация = ждут AuthenticationManager_GetExternalLoginInfoAsync_WithExternalBearer() ;
Что этот класс:
private async Task<ExternalLoginInfo> AuthenticationManager_GetExternalLoginInfoAsync_WithExternalBearer()
{
ExternalLoginInfo loginInfo = null;
var result = await Authentication.AuthenticateAsync(DefaultAuthenticationTypes.ExternalBearer);
if (result != null && result.Identity != null)
{
var idClaim = result.Identity.FindFirst(ClaimTypes.NameIdentifier);
if (idClaim != null)
{
loginInfo = new ExternalLoginInfo()
{
DefaultUserName = result.Identity.Name == null ? "" : result.Identity.Name.Replace(" ", ""),
Login = new UserLoginInfo(idClaim.Issuer, idClaim.Value),
};
}
}
return loginInfo;
}
Это происходит потому, что RegisterExternal класс по умолчанию будет использовать аутентификации типа куки. Всякий раз, когда я его использую, он возвращает null, поэтому после серфинга в Интернете я заметил, что необходимо добавить этот код, который, в свою очередь, будет использовать носитель для аутентификации, это приведет к ответу, в котором имя пользователя и идентификатор больше не равны нулю , таким образом санкционированный. (См рисунок ниже)
Return object (username and login)
Но, когда я хочу, чтобы претендовать на электронную почту, я не могу это сделать. Он всегда будет возвращать null независимо от того, что я делаю.
Facebook не обязан выполнять требования по электронной почте. Вы уверены, что это всегда так? Можете ли вы проверить с другими учетными записями FB? – RVid
Я проверил, что facebook действительно запрашивает электронное письмо по его запросу, и если я посмотрю на этот запрос, я вижу, что facebook отправляет мне письмо. (всякий раз, когда вы нажимаете кнопку «login with facebook», facebook выводит экран с «приложение получит следующее». Там он запрашивает мой адрес электронной почты, и если я редактирую данные, я вижу, что отображается мой адрес электронной почты, так что это нормально работает) –
Вы когда-нибудь решали этот @MichaelTralala? Запуск в то же самое на данный момент – Braydie