多个 Facebook 客户端 aspnet 核心 2.



我有两个不同的应用程序在Aspnet Core 2.0中调用相同的api。 为了简单起见,在启动代码中,我有

...
  services.AddAuthentication()
           .AddGoogle(options =>
           {
               options.ClientId = WebConfig.GoogleClientId;
               options.ClientSecret = WebConfig.GoogleClientSecret;
           })
           .AddFacebook(options =>
           {
               options.ClientId = WebConfig.FacebookConsumerClientId;
               options.ClientSecret = WebConfig.FacebookConsumerClientSecret;
               options.SaveTokens = true;
           })
           .AddFacebook(options =>
           {
               options.ClientId = WebConfig.FacebookProviderClientId;
               options.ClientSecret = WebConfig.FacebookProviderClientSecret;
               options.SaveTokens = true;
           })
           .AddOAuthValidation();

没有警告,但是当我尝试运行迁移时,错误显示

 "scheme already exists:facebook"

如何在 Aspnet Core 2.0 中注册多个 facebook 客户端? 我在另一篇文章中读到,在 aspnet core 1.x 中,您可以设置不同的方案。 我也可以在这里通过添加

options.SignInScheme = "facebook1";

而对于另一个

options.SignInScheme = "facebook2";

但不确定我还需要做什么?

正如您所说,您应该为每个身份验证设置不同的架构名称。你可以这样做:

services.AddAuthentication()
       .AddGoogle(options =>
       {
           options.ClientId = WebConfig.GoogleClientId;
           options.ClientSecret = WebConfig.GoogleClientSecret;
       })
       .AddFacebook("facebook1", options =>
       {
           options.ClientId = WebConfig.FacebookConsumerClientId;
           options.ClientSecret = WebConfig.FacebookConsumerClientSecret;
           options.SaveTokens = true;
       })
       .AddFacebook("facebook2", options =>
       {
           options.ClientId = WebConfig.FacebookProviderClientId;
           options.ClientSecret = WebConfig.FacebookProviderClientSecret;
           options.SaveTokens = true;
       })
       .AddOAuthValidation();

最新更新