Base solution for your next web application
Open Closed

Login using Google SSO #4476


User avatar
0
huntethan89 created

Hi,

I am using goolge SSO to login. when i click goolge button it taken to select user and come back to login page. It is not allowing me to go to index page.

i added keys in web config.

Thanks Himanshu sharma


7 Answer(s)
  • User Avatar
    0
    aaron created
    Support Team

    Can you show the error in Logs.txt?

  • User Avatar
    0
    huntethan89 created

    Hi,

    public virtual async Task<ActionResult> ExternalLoginCallback(string returnUrl, string tenancyName = "") { returnUrl = NormalizeReturnUrl(returnUrl);

            **var loginInfo = await _authenticationManager.GetExternalLoginInfoAsync();**
            if (loginInfo == null)
            {
                return RedirectToAction("Login");
            }
    
            //Try to find tenancy name
            if (tenancyName.IsNullOrEmpty())
            {
                tenancyName = _tenancyNameFinder.GetCurrentTenancyNameOrNull();
                if (tenancyName.IsNullOrEmpty())
                {
                    var tenants = await FindPossibleTenantsOfUserAsync(loginInfo.Login);
                    switch (tenants.Count)
                    {
                        case 0:
                            return await RegisterView(loginInfo);
                        case 1:
                            tenancyName = tenants[0].TenancyName;
                            break;
                        default:
                            return View("TenantSelection", new TenantSelectionViewModel
                            {
                                Action = Url.Action("ExternalLoginCallback", "Account", new { returnUrl }),
                                Tenants = tenants.MapTo&lt;List&lt;TenantSelectionViewModel.TenantInfo&gt;>()
                            });
                    }
                }
            }
    
            var loginResult = await _logInManager.LoginAsync(loginInfo.Login, tenancyName);
    
            switch (loginResult.Result)
            {
                case AbpLoginResultType.Success:
                    await SignInAsync(loginResult.User, loginResult.Identity, true);
                    return Redirect(returnUrl);
                case AbpLoginResultType.UnknownExternalLogin:
                    return await RegisterView(loginInfo, tenancyName);
                default:
                    throw _abpLoginResultTypeHelper.CreateExceptionForFailedLoginAttempt(loginResult.Result, loginInfo.Email ?? loginInfo.DefaultUserName, tenancyName);
            }
        }
    

    When it came to above method, it is giving null to login info in highlighted line.

  • User Avatar
    0
    huntethan89 created

    Hi ,

    Following is the error written in logs.txt

    DEBUG 2018-01-11 13:42:52,966 [1 ] Abp.Owin.OwinUserTokenProviderAccessor - DataProtectionProvider has not been set yet.

    Thanks

  • User Avatar
    0
    aaron created
    Support Team

    Try this:

    You can use this code in your Owin startup file (after app.UseAbp()):

    app.RegisterDataProtectionProvider();
    
  • User Avatar
    0
    huntethan89 created

    it was already there.

  • User Avatar
    0
    huntethan89 created

    i am getting NULL var loginInfo = await _authenticationManager.GetExternalLoginInfoAsync();

  • User Avatar
    0
    ismcagdas created
    Support Team

    Hi @smartlayer,

    The log you have shared is a DEBUG log. Are ther eany ERROR log in your Logs.txt file ?