我想从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");
});
在我的控制器中,我尝试获取令牌,但是我又得到了“ null”。
控制器:
[Authorize]
public async Task<IActionResult> Test()
{
var accessToken = await HttpContext.GetTokenAsync("access_token");
return Json(new KeyValuePair<string, object>("access_token", accessToken));
}
是否有任何优雅的方法来获取访问令牌?
答案 0 :(得分:0)
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");