我创建了一个新的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),但它似乎比有关其他声明信息更多地是关于配置身份验证提供程序。
有人这样做吗?也许不可能?
感谢任何提前的指针。
发件人: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");