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?