アイデンティティフレームワークを使用せずに、facebook、google、およびlinkedinの外部ログイン方式を作成しようとしています。私はすべてのユーザーを格納し、いくつかの認証を行うapiを持っています。今、私は、外部ログインから情報を取得する方法には迷っています。アイデンティティを使用しない外部ログインasp.net core 2.0
私はこれに挑戦しています。
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult ExternalLogin(string provider)
{
//Issue a challenge to external login middleware to trigger sign in process
return new ChallengeResult(provider);
}
これは正常に機能し、Google、Facebook、またはリンクイン認証のいずれかにリダイレクトされます。この部分に今
:
public async Task<IActionResult> ExternalLoginCallback()
{
//Extract info from externa; login
return Redirect("/");
}
私が欲しいのは、外部ログインによって提供された情報を得ることです。
私は私の研究から見つけたものを試してみました、
var result = await HttpContext.AuthenticateAsync(provider);
if (result?.Succeeded != true)
{
return Redirect("/");
}
var externalUser = result.Principal;
var claims = externalUser.Claims.ToList();
まず第一に、私は私が私のコールバック文字列の簡単な?provider=Google
が、私はそれを使用することができます指定するプロバイダ名を渡すかどうかわかりませんサインイン方式をチェックします。私はこれが間違っていると思います。第二に、私はawait HttpContext.AuthenticateAsync("Google")
を厳密にコーディングし、このコードに達するとデバッグは停止します。なぜ私は分からない。
私は、単一認証でプロジェクトを作成するときに生成されたコードを見てきました。
var info = await _signInManager.GetExternalLoginInfoAsync();
悲しいことに、私はユーザーストアを持っていないため、アプリケーションでAPIを使用しているためIDを使用できません。
ねえ、あなたは今までに解決策を見つけましたか?あなたがasp.netのアイデンティティなしでこれを行う方法に関する文書や例を見つけることができません... :( – Reft