【问题标题】:Can't get email address using Facebook SDK for asp.net无法使用 Facebook SDK for asp.net 获取电子邮件地址
【发布时间】:2015-08-14 10:56:43
【问题描述】:

我正在使用 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);

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

方法一:默认情况下,执行第一行后,变量 info 具有 email 属性。但它总是返回 null。

var info = await AuthenticationManager.GetExternalLoginInfoAsync();
string email = info.Email;

方法二:我使用下面的代码,它也返回null。

var fb = new FacebookClient(access_token.Value);
dynamic me = fb.Get("email");
string email = me.email;

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

【问题讨论】:

  • 希望不是您真正的应用程序 ID 和问题中的真正秘密。如果是的话,可能值得改变它并隐藏上面的安全......

标签: asp.net facebook facebook-login


【解决方案1】:

尝试修改方法2如下:

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

【讨论】:

  • 先生,您帮助我的方式比您知道的要多。谢谢!
【解决方案2】:

方法 2 应该适用于 2.4 版之前的 facebook 应用程序,但对于 2.4 版,我猜这是您应该编辑的应用程序版本:

dynamic me = fb.Get("/me?fields=email");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多