在处理用户配置文件时,我个人更喜欢使用 FQL。如果您想尝试 FQL,请查看以下代码。如果您想坚持使用 Graph API,请参阅以下答案:https ://stackoverflow.com/a/12434640/450534
try {
String query = "SELECT pic_cover FROM user where uid = " + PUT_THE_USER_ID_HERE;
Bundle param = new Bundle();
param.putString("method", "fql.query");
param.putString("query", query);
String response = Utility.mFacebook.request(param);
JSONArray JAUser = new JSONArray(response);
for (int i = 0; i < JAUser.length(); i++) {
JSONObject JOUser = JAUser.getJSONObject(i);
// COVER PHOTO
if (JOUser.has("pic_cover")) {
String getCover = JOUser.getString("pic_cover");
if (getCover.equals("null")) {
String finalCover = null;
} else {
JSONObject JOCoverSource = JOUser.optJSONObject("pic_cover");
if (JOCoverSource.has("source")) {
String finalCover = JOCoverSource.getString("source");
} else {
String finalCover = null;
}
}
} else {
String finalCover = null;
}
}
} catch (Exception e) {
// TODO: handle exception
}
上面的代码已经考虑了在他们的个人资料中没有设置封面照片的用户,并检查了它的可用性。使用此代码,您将拥有URL
封面照片,然后可以根据需要进行处理。
注意:如果你是获取登录用户的封面照片,这段代码SELECT pic_cover FROM user where uid = " + PUT_THE_USER_ID_HERE;
也可以写成:SELECT pic_cover FROM user where uid = me()";
对于未登录的用户的封面照片,上面可以照原样使用。
作为旁注的几件事。
- 我几乎完全使用Fedor 的延迟加载技术来加载图像。
- 我建议在
AsyncTask
.