Microsoft.AspNetCore.Authentication.Facebook 库
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => { options.DataProtectionProvider = CreateRedisDataProtectionProvider(ConnectionMultiplexer.Connect($"{redisConnectionString},defaultDataBase=1")); //options.DataProtectionProvider = DataProtectionProvider.Create(new DirectoryInfo(@"C:\_xx_sso")); options.SlidingExpiration = true; options.LoginPath = "/Account/SignIn"; options.Cookie = new CookieBuilder() { HttpOnly = true, Name = $".{GetType().Namespace}", }; }) .AddFacebook(FacebookDefaults.AuthenticationScheme, o => { o.AppId = Configuration.GetSection("FacebookDeveloper").GetValue<string>("AppId"); o.AppSecret = Configuration.GetSection("FacebookDeveloper").GetValue<string>("AppSecret"); o.SaveTokens = false; o.CallbackPath = new PathString("/signin-facebook"); o.Events = new Microsoft.AspNetCore.Authentication.OAuth.OAuthEvents { OnRemoteFailure = context => { if(context.Request.Query["error"] == "access_denied" && context.Request.Query["error_code"] == "200" && context.Request.Query["error_description"] == "Permissions+error" && context.Request.Query["error_reason"] == "user_denied") context.Response.Redirect("/Account/SignIn"); else context.Response.Redirect("/Profile"); context.HandleResponse(); return Task.CompletedTask; } }; });
必须要有 context.HandleResponse(); 否则无法跳转。