我正在尝试获取用户的封面照片,并将其显示在布局的顶部。我正在使用AsyncTask运行对Facebook的API调用。我用来获取Facebook数据的代码是
JSONObject json = null;
response = Utility.facebook.request("me?fields=cover");
json = Util.parseJson(response);
停止线程的异常来自下一步的json错误,因为返回的json为空,即使请求已清除。我可以使用“ me”或“ me / albums”或“ me?fields = cover”以外的任何内容来获取合适的json。当我注释掉最后一行时,“尝试”过程完成,没有任何异常/错误。
Facebook API有问题吗?还是我做错了?
最佳答案
我个人更喜欢在处理用户个人资料时使用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's延迟加载技术来几乎专门地加载图像。
我建议在
AsyncTask
中运行代码块,我的代码或您选择的任何其他解决方案。关于android - Android-Facebook API为用户封面照片提供空结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13042698/