微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Google CSS 时,Google 外部登录按钮不会调用 OnPost 或 OnGetCallBack

如何解决使用 Google CSS 时,Google 外部登录按钮不会调用 OnPost 或 OnGetCallBack

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

<button type="submit" class="g-signin2 m-auto" data-onsuccess="onSignIn" name="provider" value="@provider.Name"></button>
        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();
            }
        }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。