DotNetOpenAuth没有从Facebook客户端获取电子邮件地址?

时间:2015-01-25 14:59:16

标签: c# .net asp.net-mvc facebook-graph-api dotnetopenauth

我正在使用DotNetOpenAuth 4.3作为当前项目。我相信,作为FacebookClient方法的默认范围的一部分,它提供了email参数。我在RequestAuthroization期间验证了Facebook正在声明它将提供我的电子邮件地址和个人资料信息。

enter image description here

查看请求结果我 查看提供商信息或ExtraData属性中的电子邮件地址:

enter image description here enter image description here

我确实尝试添加"电子邮件"隐含的范围。

public static class AuthenticationHelper
    {
        public static FacebookClient AuthFacebookClient()
        {
            String facebookKey = "XXXXXXXXXX";
            String facebookSecret = "XXXXXXXXXXXXXXX";
            return new FacebookClient(facebookKey, facebookSecret, new []{"email"});
        }
    }

public ActionResult Authentication()
        {
            var authString = Url.Action("AuthenticationResult", "Login",null,"http");
            var authUrl = new Uri(authString);

            var auth = AuthenticationHelper.AuthFacebookClient();

            auth.RequestAuthentication(HttpContext,authUrl);

            //should never reach this point
            return null;
        }

        public ActionResult AuthenticationResult()
        {
            var authString = Url.Action("AuthenticationResult", "Login", null, "http");
            var authUrl = new Uri(authString);
            var res = AuthenticationHelper.AuthFacebookClient().VerifyAuthentication(HttpContext, authUrl);
            return new EmptyResult();
        }

我是否需要做一些不同的事情以确保我收回电子邮件地址或Facebook不发送此信息?

Upadate

我注意到的一件事是我使用的是DotNetOpenAuth.AspNet.Clients.FacebookClient。查看源后,应在用户名密钥中填充电子邮件地址。看起来facebook正在设置用户名,在我的情况下,是我的全名。我不明白为什么。

又一次更新:

我开始认为它可能是Facebook Graph issue。在他们的图表浏览器中测试帐户后,我注意到电子邮件地址由于某种原因没有回来。根据我证明的链接,这是一个已知问题,可能取决于帐户的创建方式或电子邮件地址是否未得到确认。

2 个答案:

答案 0 :(得分:2)

我在FacebookClient上使用以下代码并为我工作(.net c#)

from impala.udf import udf, ship_udf

ImportError: No module named udf

答案 1 :(得分:-1)

原来,这是与Facebook相关联的帐户。这是一个较旧的帐户,电子邮件地址未得到正确确认。即使经过确认,它仍然没有出现。显然,这是在他们的系统中创建帐户的方式。因此,建议的是,如果您需要用户提供电子邮件地址。