我想在C#中从facebook获取访问令牌。我没有找到任何在Core 2中执行此操作的代码。我正在使用.Net Core 2 MVC。在我的startup.cs中,我正在使用它:
services.AddAuthentication()
.AddFacebook((o) =>
{
o.AppId = Configuration["Authentication:Facebook:AppId"];
o.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
o.SaveTokens = true;
o.Scope.Add("email");
o.Scope.Add("user_birthday");
o.Scope.Add("user_gender");
o.Scope.Add("user_posts");
o.Scope.Add("manage_pages");
o.Scope.Add("publish_pages");
});
在我的控制器中,我尝试获取令牌,但我已经“返回”。
控制器:
[Authorize]
public async Task<IActionResult> Test()
{
var accessToken = await HttpContext.GetTokenAsync("access_token");
return Json(new KeyValuePair<string, object>("access_token", accessToken));
}
是否有任何优雅的方式来获取访问令牌?
Startup.cs
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.TokenValidationParameters = tokenValidationParameters;
})
.AddFacebook(facebookOptions =>
{
facebookOptions.AppId = "";
facebookOptions.AppSecret = "";
facebookOptions.SaveTokens = true;
facebookOptions.Scope.Add("email");
facebookOptions.Scope.Add("user_birthday");
facebookOptions.Scope.Add("user_gender");
facebookOptions.Scope.Add("user_posts");
facebookOptions.Scope.Add("manage_pages");
facebookOptions.Scope.Add("publish_pages");
})
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme);
调节器
var result = await HttpContext.AuthenticateAsync(CookieAuthenticationDefaults.AuthenticationScheme);
result.Properties.GetTokenValue("access_token");