Я использую Facebook в качестве внешнего входа в учетную запись ASP.Net Core. Я хотел бы, даже если пользователь вошел в систему через Facebook, пользователь заполнил свой профиль на веб-сайте. Для этого я использую метод ExternalLoginCallback
, из которого я хотел бы получить данные из Facebook, такие как дата рождения, местоположение (страна),...
Одна проблема заключается в том, что если пользователь снял некоторые разрешения, вызов Facebook по умолчанию завершится ошибкой:
var info = await _signInManager.GetExternalLoginInfoAsync();
if (info == null)
return RedirectToAction(nameof(Login));
// Sign in the user with this external login provider if the user already has a login.
var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false);
Мне также потребуется выполнить некоторые дополнительные проверки пользовательских данных, что потребует непосредственного вызова Graph API.
Мои точки блокировки: - В методе ExternalLoginCallback
мне нужно было бы разделить «страну» и «день рождения», чтобы Facebook API не возвращал ошибку в случае, если пользователь не предоставил разрешение. - Для этого мне понадобится пользователь access_token (и для дополнительных вызовов в методе), я не вижу, как его получить, даже если он используется структурой идентификации Facebook. После создания профиля я хотел бы получить доступ к этому access_token, который должен храниться в таблице UserTokens (наверное?), но я не могу ее там найти, таблица пуста. (мой DbContext - это класс, расширяющий IdentityDbContext<AppUser, AppRole, long>
, не знаю, влияет ли это)
Я нашел этот ответ https://stackoverflow.com/a/42670559/4881677, который может помочь, но этого недостаточно.
Любая помощь? :)