Мы разрабатываем мобильное приложение на iOS и Android с нашим собственным внутренним интерфейсом и сервером API, используя ASP. Net Core с Microsoft.AspNetCore.Identity.
Мы необходимо разрешить пользователям входить в систему через Facebook в качестве необязательного для учетной записи телефона / электронной почты по умолчанию.
Я следил за this и this из документов Microsoft. Но этот метод, похоже, требует от пользователя входа в систему с помощью браузера. Создав контроллер с сервера для перенаправления пользователя в диалоговое окно входа в Facebook с использованием метода Challenge()
, предоставленного фреймворком.
public class AuthController : Controller
{
...
[HttpGet]
[Route("External/Facebook}")]
public async Task<IActionResult> ExternalFacebook(string myparam)
{
// myparam validation
var scheme = await authService.GetExternalProviderSchemeAsync("Facebook");
var redirectUrl = Url.Action(nameof(ExternalFacebookCallback), null, new { myparam }, Request.Scheme);
var properties = signInManager.ConfigureExternalAuthenticationProperties(scheme.Name, redirectUrl);
return Challenge(properties, scheme.Name );
}
}
Затем в ExternalFacebookCallback
мне нужно только проверить, что пользователь аутентифицирован в Facebook, а затем войдите / создайте пользователя в мою систему, предоставив мой собственный токен доступа.
Проблема для этого метода, как уже упоминалось, похоже, требует, чтобы пользователь вошел в систему с помощью браузера, а не приложения Facebook. И моя пользовательская база, похоже, использует приложение Facebook и, похоже, не хочет снова входить в систему в браузере.
В настоящее время мы используем метод, которым я не хочу пользоваться. Мы позволяем клиенту использовать Facebook SDK для iOS и Android, чтобы получить access_token
и отправить токен на сервер. Затем сервер использует токен с Facebook для проверки и получения информации о пользователе.
Есть ли лучший способ сделать это? Или текущий способ уже ОК? Спасибо.