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