Facebook Graph API不会为封面照片返回null

时间:2015-09-01 10:57:20

标签: android facebook facebook-graph-api

我想挑选用户'封面照片,用于在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
}

1 个答案:

答案 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的价值。

我希望它有所帮助!