我有一个IdentityServer4应用程序,它具有Facebook集成,这是工作正常。IdentityServer4直接链接到Facebook身份验证
我也有一个使用IdentityServer的Angular2应用程序。目前,如果用户想通过Facebook登录,他们必须点击“登录”,然后点击Facebook按钮。
我想在我的Angular应用程序上有一个'Facebook'按钮,然后它会自动将它们直接重定向到Facebook,绕过主登录屏幕。
我注意到以下行的代码:
public async Task<IActionResult> Login(string returnUrl)
{
...
if (vm.IsExternalLoginOnly)
{
// only one option for logging in
return ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl);
}
...
}
这基本上是我想要的,自动重定向到Facebook。所以我增加了以下方法:
public async Task<IActionResult> FacebookLogin(string returnUrl)
{
var vm = await _account.BuildLoginViewModelAsync(returnUrl);
// only one option for logging in
return ExternalLogin(vm.ExternalProviders.First(x => x.DisplayName.ToUpper() == "FACEBOOK").AuthenticationScheme, returnUrl);
}
虽然这并直接重定向到Facebook和不认证,不重定向回调用应用程序。我可以看到有关无效的redirectUri记录的错误,我认为这是因为我没有拨打connect/authorize
?
那么有没有办法将一个额外的参数传递给connect/authorize
来指定使用Facebook,然后我可以在我的控制器中使用,或者调用不同的方法?
感谢
谢谢,希望这是一个简单的实施!必须在文档中错过。尽管如此,我必须将值设置为'idp:Facebook'才能正常工作,并且区分大小写。 – ADringer