2012-01-31 15 views
0
https://graph.facebook.com/me/accounts?access_token=USERS_AUTH_TOKEN 

返回用戶具有管理員身份的頁面列表(以JSON格式)。如何使用graph.facebook.com/me/accounts中的頁面列表

我想列出下拉列表中的所有頁面,並讓用戶選擇他想使用的Facebook頁面(在我的webapp上),這樣我就可以獲得該頁面的特定訪問令牌。

我的問題是 - 什麼是最簡單和最好的方式來做到這一點。我之前從未使用過JSON,但我猜想通過facebook-sdk來做這件事非常簡單。

+0

我的第一個猜測是你使用url做WebRequest,並且使用一些奇特的linq對返回的數據生成一個List也許。具體的C#代碼會很棒! – 2012-01-31 10:40:31

回答

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 />"); 
       } 



      } 
} 
1

由於您使用的是C#SDK,只需取對象數組並將它們轉換爲IList<IDictionary>()數組,然後使用pageId作爲鍵並將值作爲頁面名稱。

這不是完全編譯,但你的想法:

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); 
    } 

{ 
+0

Erhm。沒有抱歉,我沒有真正明白。我想出了一個辦法,但它太慢了。需要+30秒才能執行該死的東西。也許你有一些投入。我會在一秒內發佈它。 – 2012-01-31 16:26:15

相關問題