1

Je configure une connexion sociale dans une application ASP.NET Core 2.0 sans utiliser Identity. Je veux simplement authentifier l'utilisateur à travers Facebook, Google et LinkedIn et recevoir leurs informations. Je gère moi-même le stockage des informations utilisateur.Configuration de l'authentification sociale dans ASP.NET Core 2.0

Voici ce que je l'ai fait jusqu'à présent qui me donne l'erreur suivante:

No authentication handler is configured to handle the scheme: facebook

Voici la modification du fichier Startup.cs:

public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddMvc(); 

      // Added these lines for cookie and Facebook authentication 
      services.AddAuthentication("MyCookieAuthenticationScheme") 
       .AddCookie(options => { 
        options.AccessDeniedPath = "/Account/Forbidden/"; 
        options.LoginPath = "/Account/Login/"; 
       }) 
       .AddFacebook(facebookOptions => 
       { 
        facebookOptions.AppId = "1234567890"; 
        facebookOptions.AppSecret = "1234567890"; 
       }); 
     } 

     public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
     { 
      if (env.IsDevelopment()) 
      { 
       app.UseDeveloperExceptionPage(); 
       app.UseBrowserLink(); 
      } 
      else 
      { 
       app.UseExceptionHandler("/Home/Error"); 
      } 

      app.UseStaticFiles(); 

      // Added this line 
      app.UseAuthentication(); 

      app.UseMvc(routes => 
      { 
       routes.MapRoute(
        name: "default", 
        template: "{controller=Home}/{action=Index}/{id?}"); 
      }); 
     } 

j'ai cette méthode d'action où je envoyer l'utilisateur pour déterminer le fournisseur que nous utilisons pour authentaiton par exemple Facebook, Google, etc. Ce code provient de mon application ASP.NET Core 1.1 qui fonctionne bien.

[AllowAnonymous] 
    public async Task ExternalLogin(string provider, string returnUrl) 
    { 
     var properties = new AuthenticationProperties 
     { 
      RedirectUri = "Login/Callback" 
     }; 

     // Add returnUrl to properties -- if applicable 
     if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl)) 
      properties.Items.Add("returnUrl", returnUrl); 

     // The ASP.NET Core 1.1 version of this line was 
     // await HttpContext.Authentication.ChallengeAsync(provider, properties); 
     await HttpContext.ChallengeAsync(provider, properties); 

     return; 
    } 

Je reçois le message d'erreur quand je frappe la ligne ChallangeAsync.

Qu'est-ce que je fais mal?

+2

Les noms de schéma sont sensibles à la casse. Pouvez-vous essayer avec Facebook au lieu de Facebook? – Pinpoint

+0

Vous ne savez pas exactement à quelle partie du code vous faites référence. Pourriez-vous clarifier s'il vous plaît? Merci. – Sam

+0

Juste réalisé ce dont vous parliez et vous avez exactement raison !!!!! Il a été «Facebook» pas «facebook» – Sam

Répondre

1

No authentication handler is configured to handle the scheme: facebook

Les noms de schéma sont sensibles à la casse. Utilisez provider=Facebook au lieu de provider=facebook et cela devrait fonctionner.

+0

J'essaie également d'ajouter l'authentification 'LinkedIn'. Quel serait le plan pour cela? J'ai essayé 'LinkedIn' mais encore une fois, je reçois l'erreur' no handler is configured'. – Sam

+0

N'hésitez pas à ouvrir une question distincte (merci de poster le lien ici). La réponse n'est pas compliquée, mais je suis sûr que beaucoup de gens seront confrontés à des problèmes similaires à un moment donné lors de la migration vers la version 2.0. – Pinpoint

+0

Bon point! Voici le lien vers ma nouvelle question: https://stackoverflow.com/questions/45777071/setting-up-linkedin-oauth-authentication-in-asp-net-core-2-0 – Sam