У меня есть клиентское приложение (Angular7) и веб-API (AspNetCore 2.2).
Я звоню на Facebook через клиент, и он возвращает https://www.facebook.com/v3.1/dialog/oauth
в моем браузере. Однако браузер не открывает ссылку. Вот ошибки, которые я вижу. ошибка консоли
Я также вижу ссылку на Facebook на вкладках сети, но у нее есть опция запроса Request Method: OPTIONS
на вкладке сети . Что-то не так с этим?
Вот мой установочный код CORS.
services.AddCors(options =>
{
options.AddPolicy("AnyOrigins",
builder =>
{
builder.WithOrigins("http://localhost:4200")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
//services.AddSwaggerGen(c =>
//{
// c.SwaggerDoc("v1", new Swashbuckle.AspNetCore.Swagger.Info { Title = "Developer API", Version = "v1" });
//});
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultSignInScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(30);
options.SlidingExpiration = true;
options.Cookie.HttpOnly = true;
options.Cookie.SameSite = SameSiteMode.None;
options.LoginPath = "/login";
})
.AddJwtBearer(op =>
{
op.Audience = "auctioner-token";
op.Authority = "http://localhost:5000";
op.RequireHttpsMetadata = false;
op.SaveToken = true;
})
.AddFacebook("facebook", facebookOptions =>
{
facebookOptions.AppId = "**********";
facebookOptions.AppSecret = "************";
facebookOptions.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
facebookOptions.SaveTokens = true;
facebookOptions.Scope.Add("public_profile");
facebookOptions.Scope.Add("email");
facebookOptions.Events.OnCreatingTicket = ctx =>
{
List<AuthenticationToken> tokens = ctx.Properties.GetTokens().ToList();
tokens.Add(new AuthenticationToken()
{
Name = "TicketCreated",
Value = DateTime.UtcNow.ToString(),
});
ctx.Properties.IsPersistent = true;
ctx.Properties.StoreTokens(tokens);
return Task.CompletedTask;
};
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddTransient<IRepository, Repository>();
Вот код конфигурации:
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseCors("AnyOrigins");
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "swagger")),
RequestPath = "/swagger"
});
//app.UseSwagger();
//app.UseSwaggerUI(c =>
//{
// c.SwaggerEndpoint("/swagger/v1/swagger.json", "Developer API");
//});
app.UseCookiePolicy();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
Я застрял на этом пару недель. Пожалуйста, помогите. Заранее спасибо.