.NET Core 2 Facebook访问令牌

问题描述 投票:0回答:1

我想在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));
        }

是否有任何优雅的方式来获取访问令牌?

c# facebook-graph-api .net-core-2.0
1个回答
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");
© www.soinside.com 2019 - 2024. All rights reserved.