如何解决使用 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 举报,一经查实,本站将立刻删除。