ASP.NET Web API Authentication.GetExternalLoginInfoAsync всегда возвращает null

У меня есть проект ASP.NET 5, и я использую Web API для установки внешнего входа (для Facebook и Google). В моем случае у меня есть API-интерфейс API (не MVC-контроллер), который содержит следующий код:

[OverrideAuthentication]
[HostAuthentication(DefaultAuthenticationTypes.ExternalCookie)]
[AllowAnonymous]
[Route("ExternalLogin", Name = "ExternalLogin")]
public async Task<IHttpActionResult> GetExternalLogin(string provider, string error = null)
{
    if (error != null)
        return Redirect(Url.Content("~/") + "#error=" + Uri.EscapeDataString(error));

    if (!User.Identity.IsAuthenticated)
        return new ChallengeResult(provider, this);

    var exLog = await Authentication.GetExternalLoginInfoAsync();

когда мобильное приложение вызывает этот метод, я получаю запрос аутентифицированным правильно, и свойство User.Identity.IsAuthenticated истинно, и я вижу в отладчике, что пользователь прав, но проблема в том, exlog переменная exlog всегда приходит ноль.

здесь свойство Authentication

private IAuthenticationManager Authentication => this.Request.GetOwinContext().Authentication;

Я прочитал каждый вопрос о стеке об этой ошибке, но мне ничего не помогло, большинство вопросов для контроллера MVC, так что это не помогло.

например, этот вопрос не помог мне, потому что это для MVC.

Обновление Я использую Owin 4.0

Ответ 1

Вы получаете "NULL", потому что вы не записывали код, если IsAuthenticated = true, а что делать? (означает перенаправление на любую страницу или другое).

внимательно изучите условия if для проверки IsAuthenticated: if (! User.Identity.IsAuthenticated)

Может быть, это может вам помочь.