Войдите в Facebook в ASP. Net Core Identity для мобильного API и используйте приложение Facebook для входа - PullRequest
0 голосов
/ 28 мая 2020

Мы разрабатываем мобильное приложение на 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 для проверки и получения информации о пользователе.

Есть ли лучший способ сделать это? Или текущий способ уже ОК? Спасибо.

...