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:\_surveysso"));
- 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(); 否则无法跳转.
来源: http://www.bubuko.com/infodetail-3043497.html