我試圖創建Facebook,谷歌和linkedin的外部登錄方案,而不使用身份框架。我有一個存儲所有用戶的API,並執行一些身份驗證。現在我對如何從外部登錄獲取信息感到迷茫。不使用身份的外部登錄asp.net核心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或linkedinn身份驗證。
現就本次部分:
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。
嘿你有沒有找到解決的辦法?找不到任何文檔或示例,說明如何在沒有asp.net標識的情況下做到這一點... :( – Reft