https://graph.facebook.com/me/accounts?access_token=USERS_AUTH_TOKEN
返回用户具有管理状态的页面列表(采用JSON格式)。
我想在下拉列表中列出所有页面,并让用户选择他想要使用的Facebook页面(在我的webapp上),这样我就可以获得该facebook页面的特定访问令牌。
我的问题是 - 最简单,最好的方法是什么。我以前从未使用过JSON,但我想通过facebook-sdk这样做非常容易。
答案 0 :(得分:1)
由于您使用的是C#SDK,只需获取对象数组并使用pageId作为键将值转换为IList<IDictionary>()
数组,值为页面名称。
这不是完全可编译的,但你明白了:
private void IList<IDictionary<long,string>> ConvertToList(dynamic meAccounts)
{
foreach(var acc in meAccounts.data)
{
yield return new Dictionary((long)acc.id, (string)acc.name);
}
{
答案 1 :(得分:0)
好的想出办法。但我不知道是正确的方式还是最优的方式。 非常喜欢投入。
[DataContract]
internal class FacebookObj
{
[DataMember]
public List<FacebookAccount> data;
[DataMember]
public FacebookNext paging;
}
[DataContract]
internal class FacebookAccount
{
[DataMember]
public string name;
[DataMember]
public string category;
[DataMember]
public string id;
[DataMember]
public string access_token;
}
[DataContract]
internal class FacebookNext
{
[DataMember]
public string next;
}
public void ShowPages(string authToken) {
WebRequest webRequest = WebRequest.Create("https://graph.facebook.com/me/accounts?access_token=" + authToken);
WebResponse webResponse = webRequest.GetResponse();
Stream sr = webResponse.GetResponseStream();
if (sr != null)
{
jsonSer = new DataContractJsonSerializer(typeof(FacebookObj));
FacebookObj o = (FacebookObj)jsonSer.ReadObject(sr2);
foreach (FacebookAccount s in o.data)
{
//Do stuff
Response.Write(s.id + " - " + s.name + "<br />");
}
}
}