MVC6 Facebook 身份错过了电子邮件声明

MVC6 Facebook identity misses email claim

我正在调试MVC6 MusicStore。我发现在 ExternalLoginCallback 方法中访问的 Facebook ExternalIdentity 没有电子邮件声明。同时,我的测试 MVC5 应用程序成功获得了该声明,因此这不是 Facebook 应用程序的问题。

有谁知道这是否是测试版错误?

您需要在 Startup.cs

的 Facebook 身份验证选项中添加 email

app.UseIdentity().UseFacebookAuthentication(options => { options.Scope.Add("email"); });

出于某种原因,在升级到 Facebook API v 2.4 后这不起作用。但是像这样添加 .UserInformationEndpoint 是有效的:

app.UseFacebookAuthentication(options =>
{
    options.AppId = Configuration["Authentication:Facebook:AppId"];
    options.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
    options.Scope.Add("email");
    options.UserInformationEndpoint = "https://graph.facebook.com/v2.4/me?fields=id,name,email,first_name,last_name,location";
});