HttpRequestException: произошла ошибка при получении информации о пользователе Google (запрещено). В Asp.net Core
Я пытаюсь включить социальный вход в свое основное приложение asp.net. Я успешно интегрировал Facebook и Twitter, и он отлично работает. Но при интеграции Google при возврате к URL обратного вызова он выплевывает эту страницу с ошибкой.
Я также использую пользовательский контроллер для процесса
[Route("signin/{provider}")]
public IActionResult SignIn(string provider, string returnUrl = null) =>
Challenge(new AuthenticationProperties { RedirectUri = returnUrl ??
"/" }, provider);
Приведенный выше код мой пользовательский вызов контроллера auth.cs.
services.AddAuthentication(options => {
options.DefaultAuthenticateScheme =
CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme =
CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme =
CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddFacebook(options =>
{
options.AppId = "";
options.AppSecret = "";
})
.AddTwitter(options =>
{
options.ConsumerKey = "";
options.ConsumerSecret =
"";
})
.AddGoogle(options => {
options.ClientId =
"<my client Id>";
options.ClientSecret = "<my client secret>";
})
.AddCookie(options => {
options.LoginPath = "/auth/signin";
});
Я ожидал, что после входа в систему с помощью Google Oauth 2.* он должен перенаправить обратно в мое приложение вместо отображения страницы с ошибкой.
3 ответа
Попробуй это:
.AddGoogle("Google", o=>
{
o.ClientId = "<insert here>";
o.ClientSecret = "<insert here>";
o.UserInformationEndpoint = "https://www.googleapis.com/oauth2/v2/userinfo";
o.ClaimActions.Clear();
o.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "id");
o.ClaimActions.MapJsonKey(ClaimTypes.Name, "name");
o.ClaimActions.MapJsonKey(ClaimTypes.GivenName, "given_name");
o.ClaimActions.MapJsonKey(ClaimTypes.Surname, "family_name");
o.ClaimActions.MapJsonKey("urn:google:profile", "link");
o.ClaimActions.MapJsonKey(ClaimTypes.Email, "email");
})
Та же проблема, я застрял примерно на двое суток. К счастью, я углубился и нашел что-то новое, что в версии asp.net core 2* и выше, вы должны упомянутьUserInformationEndpoint
. Он будет доступен в загруженном json-файле с console.google.developer.
Пожалуйста, найдите подробности ниже.
services.AddAuthentication()
.AddGoogle(options =>
{
options.ClientId = "196275387351-has575ff9m45ka8ld17s0qtps42jkmtt.apps.googleusercontent.com";
options.ClientSecret = "MoYpnVChG8VeDiGCw4XYrLH0";
options.UserInformationEndpoint= "https://www.googleapis.com/oauth2/v1/certs";
});
Контроллер: Учетная запись
public IActionResult ExternalLogin(string provider, string returnUrl)
{
var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl });
var properties = signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl);
return new ChallengeResult(provider, properties);
}
Скачал Json
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs"
Я столкнулся с этой ошибкой, потому что я не включил службы из консоли разработчика Google
поэтому, когда я включил его, все работает нормально.
это была ошибка, с которой я столкнулся до ее включения. https://s tackru.com/images/1938dfad79ca79d3e2ccd086027e05b404ed4c0f.png
Цитата В январе 2019 года Google начал закрывать вход в Google+, и разработчики должны перейти к новой системе входа в Google к марту. Пакеты ASP.NET Core 2.1 и 2.2 для аутентификации Google будут обновлены в феврале с учетом изменений. Для получения дополнительной информации и временных мер для ASP.NET Core см. Эту проблему GitHub. Этот учебник был обновлен с новым процессом установки.
В соответствии с официальным Quick Start, вы пробовали с IdentityServerConstants.ExternalCookieAuthenticationScheme;
.AddGoogle("Google", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.ClientId = "<insert here>";
options.ClientSecret = "<insert here>";
})