如何在Android上获取Facebook流和用户配置文件?
问题描述:
在我的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);
}
答
你不应该单独查询图片,只是流。流结果将具有用户标识,并且您可以使用用户标识自动构建图片网址。网址格式为:
https://graph.facebook.com/######/picture?type= ??????
其中#####是他们的用户ID,以及??????是图片类型(正方形,小,正常,大)。
感谢回答。但我也想要图片和名字。但流fql只返回id,而不是名称。这是问题所在。 :( – enzo 2011-06-06 05:52:37