.net core .net core 2.2 facebook身份验证存储访问令牌

.net core .net core 2.2 facebook身份验证存储访问令牌,.net-core,asp.net-core-mvc,.net Core,Asp.net Core Mvc,在成功身份验证后,我按照文档保存访问令牌,但我不知道该onpostconfimationsync应该在我的项目中的什么位置,我没有Account/ExternalLogin.cshtml.cs。我还注意到数据库中的表AspNetUserTokens是空的(即使在成功登录之后) 我不明白我该怎么做 Ps::我需要access_令牌与Facebook API进行一些集成。 Ps2::我正在使用Dotnet2.2 services.AddAuthentication() .AddFacebook(fb

在成功身份验证后,我按照文档保存访问令牌,但我不知道该
onpostconfimationsync
应该在我的项目中的什么位置,我没有
Account/ExternalLogin.cshtml.cs
。我还注意到数据库中的表
AspNetUserTokens
是空的(即使在成功登录之后)

我不明白我该怎么做

Ps::我需要access_令牌与Facebook API进行一些集成。 Ps2::我正在使用Dotnet2.2

services.AddAuthentication()
.AddFacebook(fbOption=>{
fbOption.AppId=配置[“身份验证:Facebook:AppId”];
fbOption.AppSecret=配置[“身份验证:Facebook:AppSecret”];
fbOption.Fields.Add(“名称”);
fbOption.Fields.Add(“电子邮件”);
fbOption.SaveTokens=true;
});

您似乎在外部登录时使用ASP.NET核心标识

ASP.NET Core 2.1及更高版本将ASP.NET Core标识作为Razor类库提供。包含Identity的应用程序可以应用脚手架来选择性地添加Identity Razor类库(RCL)中包含的源代码。见文件:

在将身份源文件构建到应用程序之后,您可以在
Areas/identity/Pages/Account
文件夹中找到
ExternalLogin.cshtml.cs
,然后就可以了

不要忘记修改
OnGetCallbackAsync
函数:

if (result.Succeeded)
{

    // Store the access token and resign in so the token is included in
    // in the cookie
    var user = await _userManager.FindByLoginAsync(info.LoginProvider,
        info.ProviderKey);

    var props = new AuthenticationProperties();
    props.StoreTokens(info.AuthenticationTokens);

    await _signInManager.SignInAsync(user, props, info.LoginProvider);


    _logger.LogInformation("{Name} logged in with {LoginProvider} provider.", info.Principal.Identity.Name, info.LoginProvider);
    return LocalRedirect(returnUrl);
}
用户登录后,您可以通过以下方式获取控制器中的访问令牌:

var accessToken = HttpContext.GetTokenAsync("access_token").Result;

您似乎正在使用ASP.NET核心标识进行外部登录

ASP.NET Core 2.1及更高版本将ASP.NET Core标识作为Razor类库提供。包含Identity的应用程序可以应用脚手架来选择性地添加Identity Razor类库(RCL)中包含的源代码。见文件:

在将身份源文件构建到应用程序之后,您可以在
Areas/identity/Pages/Account
文件夹中找到
ExternalLogin.cshtml.cs
,然后就可以了

不要忘记修改
OnGetCallbackAsync
函数:

if (result.Succeeded)
{

    // Store the access token and resign in so the token is included in
    // in the cookie
    var user = await _userManager.FindByLoginAsync(info.LoginProvider,
        info.ProviderKey);

    var props = new AuthenticationProperties();
    props.StoreTokens(info.AuthenticationTokens);

    await _signInManager.SignInAsync(user, props, info.LoginProvider);


    _logger.LogInformation("{Name} logged in with {LoginProvider} provider.", info.Principal.Identity.Name, info.LoginProvider);
    return LocalRedirect(returnUrl);
}
用户登录后,您可以通过以下方式获取控制器中的访问令牌:

var accessToken = HttpContext.GetTokenAsync("access_token").Result;

谢谢,先生。非常感谢,先生。非常感谢:)