【问题标题】:Not getting photos links when parsing Facebook graph API request on android在 android 上解析 Facebook 图形 API 请求时未获取照片链接
【发布时间】:2015-07-28 07:44:42
【问题描述】:

我正在尝试使用 Facebook SDK 4.0 和图形 API 在 android 上获取用户照片链接。 我写了这段代码来解析和获取照片链接-

new GraphRequest(

            AccessToken.getCurrentAccessToken(),
                    "/" + userId + "/photos",
                    null,
                    HttpMethod.GET,
                    new GraphRequest.Callback() {
                        public void onCompleted(GraphResponse response) {

                            JSONObject json = null;

                            try {
                                json = new JSONObject(String.valueOf(response));
                            } catch (JSONException e) {
                                e.printStackTracegetJSONObject();
                            }
                            JSONArray jarray = null;
                            try {
                                jarray = json.getJSONArray("data"); 

                            } catch (JSONException e) {
                                e.printStackTrace();
                            } 

                            for(int i = 0; i < jarray.length(); i++){
                                oneAlbum = null;
                                try {
                                    oneAlbumURL1 = jarrayjson.getJSONObjectgetString(i"url");
                                } catch (JSONException e) {
                                    einfo.printStackTracesetText(URL1.toString());
                                }

                                String URL1 = null; // 
                                try {
                                  URL1 = String.valueOf(oneAlbum.getJSONObject("link"));
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                                Log.d("", URL1);
                            }
                        }
                    }
            ).executeAsync();

但它既没有显示任何错误,也没有获取任何 URL/链接。谁能告诉这里有什么问题?

【问题讨论】:

  • 复制您自己之前的问题stackoverflow.com/questions/31665942/…(现在是第三个)——请停止垃圾邮件这个网站一遍又一遍地基本上是同一个问题。跨度>
  • 我不是垃圾邮件。这些都是真正的问题。这些不是重复的问题。第一个是获取单个用户个人资料照片,第二个是关于 Graph API URL,第三个是关于解析错误。请帮我解决这个问题。我过得很艰难。解决这个问题后,我的工作就完成了。
  • @Gissipi_453 我的回答对你有用吗?
  • @V.J.它现在工作。我根据您的回答编辑了我的代码。并根据 Facebook Graph API 文档将“url”替换为“source”以解析响应。谢谢你这么有耐心。我接受了你的回答并投了赞成票。
  • 谢谢@Gissipi_453。

标签: android facebook facebook-graph-api photos


【解决方案1】:

根据新的 Facebook api v2.4,您需要使用您的 facebook api url 传递 fields 参数。

喜欢:&fields=source,id,picture

即:

https://graph.facebook.com/userId/photos?access_token=APP_ACCESS_TOKEN&fields=source,id,picture

你会在source和picture标签中得到图片的url..

编辑

Bundle parameters = new Bundle();
parameters.putString("fields", "source,id,picture");

AccessToken.getCurrentAccessToken(),
                    "/" + userId + "/photos",
                    parameters,
                    HttpMethod.GET,

EDIT-2:

public void onCompleted(GraphResponse response) {
    JSONObject json = response.getJSONObject();
    JSONArray jarray = null;
    try {
        jarray = json.getJSONArray("data");
    } catch (JSONException e) {
        e.printStackTrace();
    }

【讨论】:

  • 如何在我的代码中使用它?或者您可以使用您的答案举例说明代码吗?
  • 现在出现了一个错误。它为 --> jarray = json.getJSONArray("data"); 提供空点异常;
  • 您需要调试您的代码。我已尝试解决 facebook 相关问题。
  • 是的,我做到了。我只是遇到了这个错误——>无法解析“JSONObject json = new JSONObject(response);”行的构造函数“JSONObject(com.facebook.GraphResponse)”
  • 查看我的编辑 1。您可以使用 JSONObject json = response.getJSONObject(); 获取 json 对象
【解决方案2】:

根据 V.J. 给出的答案,我编辑了我的代码,现在它工作得很好。只是将“url”替换为“source”。

new GraphRequest(

                AccessToken.getCurrentAccessToken(),
                         "/" + userId + "/photos",
                        parameters,
                        HttpMethod.GET,
                        new GraphRequest.Callback() {
                            public void onCompleted(GraphResponse response) {

                                json = response.getJSONObject();
                                Log.d("json value", json.toString());

                                try {

                                    jarray = json.getJSONArray("data");


                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                                for(int i = 0; i < jarray.length(); i++){

                                    try {
                                        oneAlbum = jarray.getJSONObject(i);
                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }

                                    try {
                                        URL1 = String.valueOf(oneAlbum.getJSONObject("source"));
                                        info.setText(URL1);
                                        Log.d("got URLSSSs", URL1.toString());
                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }

                                }
                            }
                        }
                ).executeAsync();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多