2011-01-10 45 views
10

Possible Duplicate:
How to get friend's birthday list using facebook api?如何獲得所有的朋友的姓名,身份證,生日,地點等等。

我想顯示包含信息,如姓名,身份證,生日,位置從facebook在Android應用程序中的列表。

我打成功的工作,雖然下面的代碼我已經得到了朋友的姓名和ID

  Bundle parameters = new Bundle(); 
    mAccessToken = facebook.getAccessToken(); 

    try { 

     parameters.putString("format", "json"); 
     parameters.putString(TOKEN, mAccessToken); 

     String url = "https://graph.facebook.com/me/friends"; 
     String response = Util.openUrl(url, "GET", parameters); 
     JSONObject obj = Util.parseJson(response); 

     Log.i("json Response", obj.toString()); 
     JSONArray array = obj.optJSONArray("data"); 

     if (array != null) { 
      for (int i = 0; i < array.length(); i++) { 
       String name = array.getJSONObject(i).getString("name"); 

       String id = array.getJSONObject(i).getString("id"); 

       Log.i(name,id); 
      } 
     } 

       ............ 
       ............ 

,但沒有得到生日,位置等在JSON響應領域。 什麼是錯誤?

+0

嗨!我用你的代碼從Facebook用戶的朋友列表中檢索,但我得到以下錯誤 - com.facebook.android.FacebookError:一個活動的訪問令牌必須用於查詢有關當前用戶的信息。請你幫我解決這個! – adrian 2011-07-15 16:00:52

+0

你能幫我一下嗎! – adrian 2011-07-16 08:11:44

+1

「https://graph.facebook.com/[id]」僅返回用戶的ID和姓名。嘗試其他方法,搜索Facebook文檔(不推薦)或谷歌。 :) P.S.我已經做了很多工作來做到這一點...我不能在這裏寫代碼... – 2011-02-15 21:57:25

回答

5

Facebook的API saysFriendList只包含每個朋友的idname

我不使用Facebook的API,但我認爲你再需要查詢https://graph.facebook.com/[id]爲每個用戶,將其ID酌情返回所有可用的信息,然後分別分析每個用戶的JSON響應( their docs不是特別清楚)。

6

當我希望得到我的朋友列表,過濾的不僅僅是他們的名稱和網站,這個工作對我來說:https://graph.facebook.com/me/friends?fields=name,website&access_token=someCrazyLongRandomlyGeneratedString

好像你應該這樣做,你就只需更換「的名字,網站'與'姓名,身份證,生日,地點'或任何你想在從用戶對象中包含的字段列表的響應中獲得:http://developers.facebook.com/docs/reference/api/user/。我相信ID會自動包含在響應中,因此您不必將其包含在請求中。

9

使用FQL語言很快得到所有的信息,你想:

$this->api->api(array('method'=>'fql.query','query'=>"SELECT uid,name,first_name,middle_name,last_name,pic_square,hometown_location,current_location,profile_url,email,website FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())")); 

與他們對應的列名的所有表的列表,我指的是:Facebook FQL Reference

1

檢索姓名,身份證,對用戶的朋友的生日和位置可以用這個FQL調用來完成:

SELECT uid,name, birthday_date, hometown_location 
FROM user 
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) 

在Android上,使用Facebook的Android SDK中,這可以實現爲:

String query = "SELECT uid,name,birthday_date, hometown_location FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) (SELECT uid2 FROM friend WHERE uid1=me())" 
Bundle params = new Bundle(); 
params.putString("method", "fql.query"); 
params.putString("query", query); 
mAsyncFacebookRunner.request(null, params, new FQLRequestListener()) 

其中FQLRequestListener擴展了RequestListener。

你需要這些權限:

friends_birthday 
friends_hometown 
0

你已經接近它,在URL中使用此,請確保您有權限friends_birthday和friends_location

String url = "https://graph.facebook.com/me/friends?fields=id,name,birthday,location"; 
相關問題