使用GraphAPI获取仅限Facebook的个人资料照片

时间:2017-04-11 13:22:44

标签: android facebook facebook-graph-api

我创建了一个Android应用程序,我想只获取Facebook用户的个人资料照片。

我尝试使用Graph API,但它提供了所有相册。有什么方法可以找到用户的个人资料照片吗?

我在Graph API中尝试了以下命令:

  

我/?字段=照片{专辑}

感谢。

1 个答案:

答案 0 :(得分:0)

最后通过以下代码获得解决方案:

GraphRequest request = GraphRequest.newMeRequest(
            AccessToken.getCurrentAccessToken(),
            new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject object, GraphResponse response) {
                    String id;
                    try {
                        final JSONArray jsonArray = object.getJSONObject("albums").getJSONArray("data");
                        for (int i = 0; i < jsonArray.length(); i++) {
                            if (jsonArray.getJSONObject(i).getString("name").equals("Profile Pictures")) {
                                id = jsonArray.getJSONObject(i).getString("id"); // ID of Profile Pictures Album

                                new GraphRequest(
                                        AccessToken.getCurrentAccessToken(),
                                        "/" + id + "?fields=photos.limit(6){picture}",
                                        null,
                                        HttpMethod.GET,
                                        new GraphRequest.Callback() {
                                            public void onCompleted(GraphResponse response) {
                                                try {
                                                    JSONObject jsonMain = response.getJSONObject();
                                                    JSONObject jsonGraphObj = jsonMain.getJSONObject("graphObject");
                                                    if (jsonGraphObj.has("photos")) {
                                                        if (jsonGraphObj.getJSONObject("photos").has("data")) {
                                                            JSONArray jsonArrayData = jsonGraphObj.getJSONObject("photos").getJSONArray("data");
                                                            for (int i = 0; i < jsonArray.length(); i++) {
                                                                if (i != 0) {
                                                                    String url = jsonArrayData.getJSONObject(i).getString("picture");
                                                                }
                                                            }
                                                        }
                                                    }
                                                } catch (Exception e) {
                                                    e.printStackTrace();
                                                }
                                            }
                                        }
                                ).executeAsync();
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        DialogsUtils.removeProgressDialog();
                    }
                }
            });

    Bundle parameters = new Bundle();
    parameters.putString("fields", "albums");
    request.setParameters(parameters);
    request.executeAsync();