有一个问题我在搜索时无法找到答案。
如果我要求用户发送来自Facebook的电子邮件,请执行以下操作:
var scope = new List<string>();
scope.Add("email");
FbClient.RequestUserAuthorization(scope);
如何检索它?我无法在FacebookGraph中找到明确的选项。
答案 0 :(得分:3)
我可以说,DotNetOpenAuth示例中的FacebookGraph对象不支持更改您收到的字段。但是,由于它正在提示的WebRequest返回一个JSON字符串,您可以自己解析它(或使用另一个JSON解析器)。这正是我所做的,使用NewtonSoft.Json.dll:
//as part of the uri for the webrequest, include all the fields you want to use
var request = WebRequest.Create("https://graph.facebook.com/me?fields=email,name&access_token=" + Uri.EscapeDataString(authorization.AccessToken));
using (var response = request.GetResponse())
{
using (var responseStream = response.GetResponseStream())
{
System.IO.StreamReader streamReader = new System.IO.StreamReader(responseStream, true);
string MyStr = streamReader.ReadToEnd();
JObject userInfo = JObject.Parse(MyStr);
//now you can access elements via:
// (string)userInfo["name"], userInfo["email"], userInfo["id"], etc.
}
}
请注意,您指定要作为WebRequest URI的一部分发回的字段。可以在https://developers.facebook.com/docs/reference/api/user/
找到可用的字段答案 1 :(得分:2)
使用DNOA This answer为我做了这件事。
刚刚添加以下内容:
var scope = new List<string>();
scope.Add("email");
client.RequestUserAuthorization(scope);
以及以下的facebook图表。
[DataMember(Name = "email")]
public string EMail { get; set; }
答案 2 :(得分:0)
您上面写的内容似乎是要求用户授权,以便在您查询用户的对象时允许您的应用收回电子邮件。要查询用户的对象,请执行HTTP Get on https://graph.facebook.com/me
。在https://developers.facebook.com/tools/explorer