【发布时间】:2017-07-17 20:17:26
【问题描述】:
我有一个集成了 Facebook 的 IdentityServer4 应用,它运行良好。
我还有一个使用 IdentityServer 的 Angular2 应用程序。目前,如果用户想通过 Facebook 登录,他们必须单击“登录”,然后将其带到 IdentityServer,然后单击 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,然后我可以在我的控制器中使用它,或者调用不同的方法?
谢谢
【问题讨论】:
标签: c# asp.net-core identityserver4