2
votes

HttpRequestException: une erreur s'est produite lors de la récupération des informations utilisateur de Google (interdit). Dans Asp.net Core

J'essaie d'activer la connexion sociale dans mon application principale asp.net. J'ai intégré avec succès Facebook et Twitter et cela fonctionne très bien. Mais lors de l'intégration de Google, en revenant à l'URL de rappel, il crache cette page d'erreur.

J'utilise également un contrôleur personnalisé pour le processus

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";
});

Le code ci-dessus est mon contrôleur personnalisé appelle auth.cs.

page d'erreur

[Route("signin/{provider}")]
public IActionResult SignIn(string provider, string returnUrl = null) => 
        Challenge(new AuthenticationProperties { RedirectUri = returnUrl ?? 
          "/" }, provider);

Une fois que je me suis connecté en utilisant googles Oauth 2. * il devrait rediriger vers mon application au lieu d'afficher la page d'erreur


1 commentaires

Où est votre erreur?


5 Réponses :


0
votes

Selon le Démarrage rapide officiel, avez-vous essayé avec IdentityServerConstants.ExternalCookieAuthenticationScheme;

    .AddGoogle("Google", options =>
    {
        options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;

        options.ClientId = "<insert here>";
        options.ClientSecret = "<insert here>";
    })


1 commentaires

dans quel fichier dll existe-t-il "IdentityServerConstants"?



2
votes

J'ai rencontré cette erreur car je n'ai pas activé les services à partir de la console des développeurs Google

donc quand je l'ai activé, tout fonctionne bien.

c'était l'erreur que j'ai rencontrée avant de l'activer. Ma page d'erreur


0 commentaires

1
votes

https : //docs.microsoft.com/en-us/aspnet/core/security/authentication/social/google-logins? view = aspnetcore-2.2

Blockquote En janvier 2019, Google a commencé à fermer la connexion Google+ et les développeurs doivent passer à un nouveau système de connexion Google d'ici mars. Les packages ASP.NET Core 2.1 et 2.2 pour l'authentification Google seront mis à jour en février pour tenir compte des modifications. Pour plus d'informations et des atténuations temporaires pour ASP.NET Core, consultez ce problème GitHub. Ce tutoriel a été mis à jour avec le nouveau processus de configuration.


1 commentaires

Vous êtes le vrai MVP



4
votes

Essayez ceci:

.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");
})


0 commentaires

3
votes

Même problème, je suis resté coincé environ deux jours. Heureusement, je suis allé au fond et j'ai trouvé quelque chose de nouveau que dans asp.net core 2 * et version supérieure, vous devez mentionner UserInformationEndpoint . Il sera disponible dans le fichier json téléchargé sur console.google.developer.
Veuillez trouver les détails ci-dessous.

"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs"

Contrôleur: Compte

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 téléchargé

services.AddAuthentication()
        .AddGoogle(options =>
        {
            options.ClientId = "196275387351-has575ff9m45ka8ld17s0qtps42jkmtt.apps.googleusercontent.com";
            options.ClientSecret = "MoYpnVChG8VeDiGCw4XYrLH0";
            options.UserInformationEndpoint= "https://www.googleapis.com/oauth2/v1/certs";
          });

p>


0 commentaires