GetExternalLoginInfoAsync Always Returns null in ASP.NET MVC

  • Last Post 04 October 2018
  • Topic Is Solved
jack posted this 04 October 2018

I've got a problem

The GetExternalLoginInfoAsync method always return null when using single sign on (SSO) with google or facebook

I don't know why, I've tested the local host works perfectly

But when i publish my site on IIS, then sometime it's work ok and some days i can't login with single sign on (SSO)

I don't know why but when i restart the application pool in IIS it's work again.

// GET: /Account/ExternalLoginCallback
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
    var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
    if (loginInfo == null)
        return RedirectToAction("Login", new { ReturnUrl = ViewBag.ReturnUrl });
    // Sign in the user with this external login provider if the user already has a login
    CustomUser user = await AppService.CustomUserStore.FindByEmailAsync(loginInfo.Email);
    if (user != null)
        await AppService.CustomUserStore.Insert(user.UserName, loginInfo.Login.LoginProvider, loginInfo.Login.ProviderKey);
    var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
    switch (result)
        case SignInStatus.Success:
            return RedirectToAction("Index", "Home");
        case SignInStatus.Failure:
            ViewBag.ReturnUrl = returnUrl;
            ViewBag.LoginProvider = loginInfo.Login.LoginProvider;
            return RedirectToAction("Login", new { ReturnUrl = ViewBag.ReturnUrl });

Any body knows the problem, please help me solve. Thanks in advance !

kimtan posted this 04 October 2018

You can clear the session before calling the ExternalLoginCallback method

// POST: /Account/ExternalLogin
public ActionResult ExternalLogin(string provider, string returnUrl)
    // Request a redirect to the external login provider
    return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));

This seems to work to fix the OWIN login problem where it stops working after about a day