我想挑选用户'封面照片,用于在Android应用中使用。除了公开个人资料访问之外,我没有从Facebook获得任何额外的批准。
这是我现在使用的代码,请告诉我哪里出错了。目前,它返回一个空值。
String URL = "https://graph.facebook.com/" + THE_USER_ID + "?fields=cover&access_token=" + Utility.mFacebook.getAccessToken();
String finalCoverPhoto;
try {
HttpClient hc = new DefaultHttpClient();
HttpGet get = new HttpGet(URL);
HttpResponse rp = hc.execute(get);
if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
String result = EntityUtils.toString(rp.getEntity());
JSONObject JODetails = new JSONObject(result);
if (JODetails.has("cover")) {
String getInitialCover = JODetails.getString("cover");
if (getInitialCover.equals("null")) {
finalCoverPhoto = null;
} else {
JSONObject JOCover = JODetails.optJSONObject("cover");
if (JOCover.has("source")) {
finalCoverPhoto = JOCover.getString("source");
} else {
finalCoverPhoto = null;
}
}
} else {
finalCoverPhoto = null;
}
} catch (Exception e) {
// TODO: handle exception
}
答案 0 :(得分:0)
这是我用来获取封面照片的代码。
使用GraphRequest
代替DefaultHttpClient
。
Bundle params = new Bundle();
params.putString("fields", "cover");
new GraphRequest(token,
"me",
params,
HttpMethod.GET,
new GraphRequest.Callback() {
@Override
public void onCompleted(GraphResponse response) {
if (response != null) {
try {
JSONObject data = response.getJSONObject();
if (data.has("cover")) {
String coverPicUrl = data.getJSONObject("cover").getString("source");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}).executeAsync();
检查您是否获得coverPicUrl
的价值。
我希望它有所帮助!