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.
[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
5 Réponses :
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>"; })
dans quel fichier dll existe-t-il "IdentityServerConstants"?
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.
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.
Vous êtes le vrai MVP
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"); })
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>
Où est votre erreur?