我正在使用DotNetOpenAuth 4.3作为当前项目。我相信,作为FacebookClient
方法的默认范围的一部分,它提供了email
参数。我在RequestAuthroization期间验证了Facebook正在声明它将提供我的电子邮件地址和个人资料信息。
查看请求结果我 不 查看提供商信息或ExtraData属性中的电子邮件地址:
我确实尝试添加"电子邮件"隐含的范围。
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。在他们的图表浏览器中测试帐户后,我注意到电子邮件地址由于某种原因没有回来。根据我证明的链接,这是一个已知问题,可能取决于帐户的创建方式或电子邮件地址是否未得到确认。
答案 0 :(得分:2)
我在FacebookClient上使用以下代码并为我工作(.net c#)
from impala.udf import udf, ship_udf
ImportError: No module named udf
答案 1 :(得分:-1)
原来,这是与Facebook相关联的帐户。这是一个较旧的帐户,电子邮件地址未得到正确确认。即使经过确认,它仍然没有出现。显然,这是在他们的系统中创建帐户的方式。因此,建议的是,如果您需要用户提供电子邮件地址。