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?
Les noms de schéma sont sensibles à la casse. Pouvez-vous essayer avec Facebook au lieu de Facebook? – Pinpoint
Vous ne savez pas exactement à quelle partie du code vous faites référence. Pourriez-vous clarifier s'il vous plaît? Merci. – Sam
Juste réalisé ce dont vous parliez et vous avez exactement raison !!!!! Il a été «Facebook» pas «facebook» – Sam