Asp.net 谷歌外部登录按钮没有';使用Google CSS时,不要调用OnPost或OnGetCallBack

Asp.net 谷歌外部登录按钮没有';使用Google CSS时,不要调用OnPost或OnGetCallBack,asp.net,asp.net-mvc,asp.net-core,asp.net-core-mvc,google-login,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,Google Login,当我使用类g-signin2时,不会调用OnPost(单击登录按钮)和OnGetCallbackAsync(谷歌登录后)方法。如果我删除Google的classg-signn2,这些方法就会被调用。我可以补充一点,这个类会弹出一个Google登录窗口,而我不会被重定向到一个新的Google页面来登录 <button type="submit" class="g-signin2 m-auto" data-onsuccess="onSignIn

当我使用类
g-signin2
时,不会调用
OnPost
(单击登录按钮)和
OnGetCallbackAsync
(谷歌登录后)方法。如果我删除Google的class
g-signn2
,这些方法就会被调用。我可以补充一点,这个类会弹出一个Google登录窗口,而我不会被重定向到一个新的Google页面来登录

<button type="submit" class="g-signin2 m-auto" data-onsuccess="onSignIn" name="provider" value="@provider.Name"></button>
公共异步任务OnGetCallbackAsync(string returnUrl=null,string remoteError=null) { returnUrl=returnUrl??Url.Content(“~/”); if(remoteError!=null) { ErrorMessage=$“来自外部提供程序的错误:{remoteError}”; 返回重定向网页(“./Login”,新的{ReturnUrl=ReturnUrl}); } var info=await _signInManager.getexternallogininfosync(); if(info==null) { ErrorMessage=“加载外部登录信息时出错。”; 返回重定向网页(“./Login”,新的{ReturnUrl=ReturnUrl}); } //如果用户已经登录,请使用此外部登录提供程序登录该用户。 var result=await _signInManager.externalLoginIgninaSync(info.LoginProvider,info.ProviderKey,isPersistent:false,bypassTwoFactor:true); if(result.successed) { _logger.LogInformation(“{Name}使用{LoginProvider}提供程序登录。”,info.Principal.Identity.Name,info.LoginProvider); 返回LocalRedirect(returnUrl); } 如果(结果IsLockedOut) { 返回重定向Topage(“/锁定”); } 其他的 { //如果用户没有帐户,请要求用户创建帐户。 ReturnUrl=ReturnUrl; ProviderDisplayName=info.ProviderDisplayName; if(info.Principal.HasClaim(c=>c.Type==ClaimTypes.Email)) { 输入=新输入模型 { Email=info.Principal.FindFirstValue(ClaimTypes.Email) }; } 返回页(); } }
        public IActionResult OnPost(string provider, string returnUrl = null)
        {
            // Request a redirect to the external login provider.
            var redirectUrl = Url.Page("./ExternalLogin", pageHandler: "Callback", values: new { returnUrl });
            var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
            return new ChallengeResult(provider, properties);
        }
        public async Task<IActionResult> OnGetCallbackAsync(string returnUrl = null, string remoteError = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (remoteError != null)
            {
                ErrorMessage = $"Error from external provider: {remoteError}";
                return RedirectToPage("./Login", new { ReturnUrl = returnUrl });
            }
            var info = await _signInManager.GetExternalLoginInfoAsync();
            if (info == null)
            {
                ErrorMessage = "Error loading external login information.";
                return RedirectToPage("./Login", new { ReturnUrl = returnUrl });
            }

            // Sign in the user with this external login provider if the user already has a login.
            var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false, bypassTwoFactor: true);
            if (result.Succeeded)
            {
                _logger.LogInformation("{Name} logged in with {LoginProvider} provider.", info.Principal.Identity.Name, info.LoginProvider);
                return LocalRedirect(returnUrl);
            }
            if (result.IsLockedOut)
            {
                return RedirectToPage("./Lockout");
            }
            else
            {
                // If the user does not have an account, then ask the user to create an account.
                ReturnUrl = returnUrl;
                ProviderDisplayName = info.ProviderDisplayName;
                if (info.Principal.HasClaim(c => c.Type == ClaimTypes.Email))
                {
                    Input = new InputModel
                    {
                        Email = info.Principal.FindFirstValue(ClaimTypes.Email)
                    };
                }
                return Page();
            }
        }