2011-06-05 76 views
1

在我的android應用程序中,我想同時獲取流和用戶。 像其他一些應用程序一樣,我想用用戶的照片和名稱來顯示新聞提要。 但是,當我使用圖形api時,很難獲取個人資料圖片。如何在Android上獲取Facebook流和用戶配置文件?

我切換到FQL並通過使用2個查詢我可以得到流和用戶的圖片。 問題是,如果頁面發佈內容,我可以閱讀該頁面,但無法同時獲取頁面配置文件,因此無法正常工作。

所以我的問題是,如果有任何解決方案,以同時顯示流和用戶的個人資料圖片?不管我是否必須使用graph api或fql,無論如何。

這是查詢,我可以得到所有流。

requestPost("SELECT source_id, target_id, message FROM stream WHERE filter_key in " 
       + "(SELECT filter_key FROM stream_filter WHERE uid=me() AND type='newsfeed') AND is_hidden = 0 limit 20"); 


public String requestPost(String fql) throws MalformedURLException, 
IOException, JSONException, FacebookError { 

    Bundle parameters = new Bundle(); 
    parameters.putString("format", "json"); 
    parameters.putString("query", fql); 
    parameters.putString("method", "fql.query"); 

    if (mFacebook.isSessionValid()) { 
     parameters.putString("access_token", mFacebook.getAccessToken()); 
    } 
    String url = (fql != null) ? "https://api.facebook.com/method/fql.query?query=QUERY" 
      : "https://api.facebook.com/restserver.php"; 
    String response = mFacebook.request(parameters); 
    response = "{\"data\":" + response + "}"; 

    JSONObject json = Util.parseJson(response); 
    JSONArray data = json.getJSONArray("data"); 
    // ///////////////fql///////////////////////////////// 

    posts.removeAll(posts); 
    for (int i = 0; i < data.length(); i++) { 
     JSONObject jpost = data.getJSONObject(i); 
     Post po = new Post(); 
     po.po_fromid = jpost.getString("source_id"); 
     po.po_message = jpost.getString("message"); 
     requestUser("SELECT name, pic_square FROM user WHERE uid =" 
       + po.po_fromid); 

     posts.add(po); 

    } 
    Message msg = new Message(); 
    msg.what = 0; 

    mHandler.sendMessage(msg); 

    return Util.openUrl(url, "GET", parameters); 

} 

public String requestUser(String fql) throws FileNotFoundException, 
     MalformedURLException, IOException, JSONException, FacebookError { 

    // ///////////////fql///////////////////////////////// 
    Bundle parameters = new Bundle(); 
    parameters.putString("format", "json"); 
    parameters.putString("query", fql); 
    parameters.putString("method", "fql.query"); 

    if (mFacebook.isSessionValid()) { 
     parameters.putString("access_token", mFacebook.getAccessToken()); 
    } 
    String url = (fql != null) ? "https://api.facebook.com/method/fql.query?query=QUERY" 
      : "https://api.facebook.com/restserver.php"; 
    String response = mFacebook.request(parameters); 
    response = "{\"data\":" + response + "}"; 

    JSONObject json = Util.parseJson(response); 
    JSONArray data = json.getJSONArray("data"); 
    // ///////////////fql///////////////////////////////// 
    friends.removeAll(friends); 
    for (int i = 0; i < data.length(); i++) { 
     JSONObject me = data.getJSONObject(i); 
     Friend fr = new Friend(); 
     fr.frname = me.getString("name"); 
     fr.pic = me.getString("pic_square"); 
     friends.add(fr); 
    } 
    return Util.openUrl(url, "GET", parameters); 

} 

回答

1

你不應該單獨查詢圖片,只是流。流結果將具有用戶標識,並且您可以使用用戶標識自動構建圖片網址。網址格式爲:

https://graph.facebook.com/######/picture?type= ??????

其中#####是他們的用戶ID,以及??????是圖片類型(正方形,小,正常,大)。

+0

感謝回答。但我也想要圖片和名字。但流fql只返回id,而不是名稱。這是問題所在。 :( – enzo 2011-06-06 05:52:37

相關問題