如何通过Facebook身份验证请求其他声明

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

我创建了一个新的ASP.net Core 3.0网站,具有来自.net项目模板的个人用户身份验证。

我通过直接在网站上注册或使用Facebook来存储用户。这是我的Startup.cs样子:

public void ConfigureServices(IServiceCollection services)
{
     services.Configure<CookiePolicyOptions>(options => {
           // This determines user consent for non-essential cookies is needed for a given request.
           options.CheckConsentNeeded = context => true;
           options.MinimumSameSitePolicy = SameSiteMode.None;
      });

      services.AddDbContext<ApplicationDbContext>(options => {
           options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
      });

      services.AddAuthentication()
           //.AddMicrosoftAccount(microsoftOptions => {  })
           //.AddGoogle(googleOptions => {  })
           //.AddTwitter(twitterOptions => {  })
           .AddFacebook(facebookOptions =>
           {
               facebookOptions.AppId = "x";
               facebookOptions.AppSecret = "y";
           });

    ...
}

这一切正常,使用默认模板,我可以按预期进行注册/登录。

当我通过Facebook登录时,我获得了有关用户的五种默认声明信息:

  • 名称标识符
  • 电子邮件地址
  • 给定名称
  • 名称

我需要做的是扩展代码,以使其能做的比默认代码还多,并且可以访问用户:

  • 电话号码
  • 地址
  • 邮政编码

(显然在用户的同意下)

我一直在阅读文档(https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/facebook-logins?view=aspnetcore-3.1),但它似乎比有关其他声明信息更多地是关于配置身份验证提供程序。

有人这样做吗?也许不可能?

感谢任何提前的指针。

c# authentication asp.net-core asp.net-identity facebook-login
1个回答
0
投票

发件人:Persist additional claims and tokens from external providers in ASP.NET Core-如果应用需要其他范围,请将其添加到选项中。例如,添加了Google https://www.googleapis.com/auth/user.birthday.read范围以检索用户的生日:

options.Scope.Add("https://www.googleapis.com/auth/user.birthday.read");
© www.soinside.com 2019 - 2024. All rights reserved.