【问题标题】:Multiple Facebook Clients aspnet core 2多个 Facebook 客户端 aspnet 核心 2
【发布时间】:2018-04-10 14:47:35
【问题描述】:

我有两个不同的应用程序在 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";

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

【问题讨论】:

  • @Pinpoint 有什么建议吗?您似乎对此了解很多。任何帮助都会很棒!

标签: asp.net-core asp.net-core-2.0 facebook-authentication asp.net-authentication


【解决方案1】:

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

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();

【讨论】:

  • 谢谢,然后我需要为每个处理程序创建自定义处理程序,还是没有这些处理程序可以工作?
  • 处理程序是什么意思?我认为它不需要更多的工作
猜你喜欢
  • 2016-10-10
  • 2018-04-07
  • 1970-01-01
  • 2016-05-10
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-06
相关资源
最近更新 更多