无法使用Facebook SDK for asp.net获取电子邮件地址

Ahm*_*mel 3 asp.net facebook facebook-login

我正在使用Facebook SDK来获取用户的电子邮件.我在Startup.Auth.css类中编写此代码:

        var x = new FacebookAuthenticationOptions();
        x.Scope.Add("email");
        x.AppId = "421656951358309";
        x.AppSecret = "5a2e5ccf163fe6918b6d6fdc8dda5184";
        x.Provider = new FacebookAuthenticationProvider()
        {
            OnAuthenticated = async context =>
            {

                context.Identity.AddClaim(new System.Security.Claims.Claim("FacebookAccessToken", context.AccessToken));
            }
        };
        x.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie;
        app.UseFacebookAuthentication(x);
Run Code Online (Sandbox Code Playgroud)

在控制器中,我使用两种方法来获取电子邮件,但两种方法都失败了.这是方法:

方法1:默认情况下,执行第一行后,变量信息具有电子邮件属性.但它总是返回null.

var info = await AuthenticationManager.GetExternalLoginInfoAsync();
string email = info.Email;
Run Code Online (Sandbox Code Playgroud)

方法2:我使用以下代码,它也返回null.

var fb = new FacebookClient(access_token.Value);
dynamic me = fb.Get("email");
string email = me.email;
Run Code Online (Sandbox Code Playgroud)

我错过了什么 ?或者我可以使用另一种方法.我可以获得其他信息,如用户名,但对于电子邮件,我不能.

小智 6

尝试修改方法2如下:

var fb = new FacebookClient(access_token.Value);
dynamic me = fb.Get("/me?fields=email");
string email = me.email;
Run Code Online (Sandbox Code Playgroud)