簡體   English   中英

如何獲得 Facebook stream 和 Android 上的用戶配置文件?

[英]How do I get a Facebook stream and user profile on Android?

在我的 android 應用程序中,我想同時獲得 stream 和用戶。 像其他一些應用程序一樣,我想顯示帶有用戶圖片和名稱的新聞提要。 但是當我使用圖形 api 時,很難獲得個人資料圖片。

我切換到 FQL,通過使用 2 個查詢,我也可以獲得流和用戶的圖片。 問題是,如果該頁面發布了某些內容,我可以閱讀該頁面但無法同時獲取該頁面的個人資料,因此無法正常工作。

所以我的問題是是否有任何解決方案可以同時顯示 stream 和用戶的個人資料圖片? 我是否必須使用圖形 api 或 fql 都沒有關系。

這是我可以獲得所有 stream 的查詢。

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

}

您不需要單獨查詢圖片,只需 stream。 stream 結果會有用戶 id,您可以使用用戶 id 自動構建圖片 url。 url 格式為:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM