.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;
谢谢,先生。非常感谢,先生。非常感谢:)