无法使用 asp.net 的 Facebook SDK 获取电子邮件地址
Can't get email address using Facebook SDK for asp.net
我正在使用 Facebook SDK 获取用户的电子邮件。我把这段代码写在 Startup.Auth.css class :
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);
在控制器中,我使用了两种方法来获取电子邮件,但两种方法都失败了。这是方法:
方法 1:默认情况下,在执行第一行后变量信息有电子邮件 属性。但它总是 return null.
var info = await AuthenticationManager.GetExternalLoginInfoAsync();
string email = info.Email;
方法二:我用下面的代码,也是returnnull.
var fb = new FacebookClient(access_token.Value);
dynamic me = fb.Get("email");
string email = me.email;
我错过了什么吗?或者我可以使用另一种方法。我可以获取其他信息,例如用户名,但对于电子邮件我不能。
方法 2 应该适用于 2.4 版之前的 facebook 应用程序,但对于 2.4 版,我想这是您应该编辑的应用程序版本:
dynamic me = fb.Get("/me?fields=email");
尝试修改方法二如下:
var fb = new FacebookClient(access_token.Value);
dynamic me = fb.Get("/me?fields=email");
string email = me.email;
我正在使用 Facebook SDK 获取用户的电子邮件。我把这段代码写在 Startup.Auth.css class :
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);
在控制器中,我使用了两种方法来获取电子邮件,但两种方法都失败了。这是方法:
方法 1:默认情况下,在执行第一行后变量信息有电子邮件 属性。但它总是 return null.
var info = await AuthenticationManager.GetExternalLoginInfoAsync();
string email = info.Email;
方法二:我用下面的代码,也是returnnull.
var fb = new FacebookClient(access_token.Value);
dynamic me = fb.Get("email");
string email = me.email;
我错过了什么吗?或者我可以使用另一种方法。我可以获取其他信息,例如用户名,但对于电子邮件我不能。
方法 2 应该适用于 2.4 版之前的 facebook 应用程序,但对于 2.4 版,我想这是您应该编辑的应用程序版本:
dynamic me = fb.Get("/me?fields=email");
尝试修改方法二如下:
var fb = new FacebookClient(access_token.Value);
dynamic me = fb.Get("/me?fields=email");
string email = me.email;