【发布时间】:2015-01-25 14:59:15
【问题描述】:
我正在为当前项目使用 DotNetOpenAuth 4.3。我相信作为FacebookClient 方法默认范围的一部分,它提供了email 参数。我确认在 RequestAuthroization 期间 Facebook 声明它将提供我的电子邮件地址和个人资料信息。
查看请求结果,我没有在 Provider 信息或 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 不会发送此信息?
更新
我刚刚注意到的一件事是我正在使用 DotNetOpenAuth.AspNet.Clients.FacebookClient。查看源后,应在用户名键中填充电子邮件地址。看起来 facebook 正在将用户名设置为我的全名。我不知道为什么。
又一次更新:
我开始认为它可能是Facebook Graph issue。在他们的图形浏览器中测试帐户后,我注意到电子邮件地址由于某种原因没有回来。根据我证明的链接,这是一个已知问题,可能取决于帐户的创建方式或电子邮件地址是否未确认。
【问题讨论】:
标签: c# .net asp.net-mvc facebook-graph-api dotnetopenauth