Я изучаю ASP.NET Core 2.2 MVC Framework.Я создал простое приложение, дал ему имя и сейчас работаю с документацией Microsoft, чтобы оно работало.Моя текущая цель - настроить внешнюю проверку подлинности Facebook.
У меня есть шаблон Visual Studio, который включает проверку подлинности для отдельной учетной записи пользователя, и я планирую развернуть это приложение в облаке Azure.Я выполнил все шаги, чтобы зарегистрировать свое приложение на странице разработчика Facebook.Я специально не хочу жестко кодировать идентификатор приложения Facebook и секрет файла запуска, потому что я хочу реализовать хранилище ключей Azure для повышения безопасности.Я предпочитаю использовать хранилище ключей Azure вместо локальных секретов, потому что хочу развернуть это решение в облаке.
Проблема в том, что, если я запускаю решение, я вижу правильную кнопку, отображающую менядля аутентификации Facebook.Он направляет меня на страницу их ошибок, и в отладчике я вижу эту ошибку:
Microsoft.AspNetCore.Mvc.RazorPages.Internal.PageActionInvoker: Информация: выполнение метода-обработчика RecipeBox3._0.Areas.Identity.Pages.Account.ExternalLoginModel.OnPost с аргументами (Facebook, /) - недействительный ModelState
Нет документации по этой ошибке, и я бегу кругами, пытаясь выяснить причинуэта ошибка.Могу ли я получить какую-нибудь помощь?
Я пробовал множество исследований того, что нужно передать Facebook;если им нужно больше, чем идентификатор и секрет, то я не могу найти ничего, что говорит это.Я безуспешно пытался пройтись по шагам, чтобы выяснить, какие данные передаются в Facebook. Отсутствует фундаментальное понимание того, как ASP.Net Core обрабатывает удостоверения и службы.
Это немногомоя конфигурация запуска, которую я называю своим классом Facebook, который читает из хранилища ключей Azure
services.Configure<Facebook>(Configuration);
services.AddTransient<Facebook>();
services.AddAuthentication().AddFacebook(facebookOptions =>
{
facebookOptions.AppId = Options.facebookID.ToString();
facebookOptions.AppSecret = Options.FacebookSecret.ToString();
});
services.Configure<RecipeBox3._0.Services.SendGrid>(Configuration);
services.AddTransient<IEmailSender, EmailSender>();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
Это мой класс Facebook (случай точно соответствует тому, что находится внутри хранилища ключей)
public class Facebook
{
public long facebookID { get; set; }
public long FacebookSecret { get; set; }
}