私はFacebookの統合を持つIdentityServer4アプリケーションを持っていますが、これはうまくいきます。IdentityServer4はFacebookの認証に直接接続します
また、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を使用するように指定する方法や、別の方法を呼び出す方法がありますか?
おかげ
ありがとう、それは簡単な実装だったと思っていた!ドキュメントでそれを見逃している必要があります。しかしちょっとメモしておけば、値を 'idp:Facebook'に設定する必要がありました。大文字と小文字が区別されます。 – ADringer