Facebook API新闻源Android

时间:2016-07-20 08:49:58

标签: android facebook api facebook-graph-api

我正试图通过Android从Facebook的Graph API获取新闻。 当我试图解析这个JSON时,它什么都没有,不是NULL,而是什么都没有。

这是我的代码,可以获取该Feed。代码是从stackoverflow和Graph API文档

获取的50/50
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_news_feed);
    userProfile = (Profile) getIntent().getParcelableExtra("Profile");
    stringsForList = new ArrayList<>();
    adapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, stringsForList);
    newsFeed = (ListView)findViewById(R.id.newsFeed);

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

                    try {
                        JSONObject mainObject = response.getJSONObject();
                        JSONObject feed = mainObject.getJSONObject("feed");
                        JSONArray data = feed.getJSONArray("data");
                        if(data == null) Log.d(LOG_TAG, "data is null");
                        // StringBuilder stringForArray;

                        for(int i = 0; i < data.length(); i++)
                       {
                           //stringForArray = null;
                           JSONObject singleNews = data.getJSONObject(i);
                           if(singleNews == null) Log.d(LOG_TAG, "news is null");



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


                }
            }
    ).executeAsync();

}

这是我正在尝试解析的JSON文件。

"feed": {
"data": [
  {
    "message": "Я їду на фестиваль ЗАХІД",
    "story": "Oleg Misko shared Zaxidfest's photo — with Василь Угринюк and 2 others.",
    "created_time": "2016-06-20T06:55:32+0000",
    "id": "1272345062793233_1291027040925035"
  },
  {
    "story": "Oleg Misko shared Zaxidfest's post.",
    "created_time": "2016-06-20T06:55:01+0000",
    "id": "1272345062793233_1291026900925049"
  },
  {
    "message": "Я їду на фестиваль ЗАХІД",
    "story": "Demian Mysakovets shared Zaxidfest's photo — with Sophia Hoshko and 2 others.",
    "created_time": "2016-06-18T15:27:35+0000",
    "id": "1272345062793233_1289904527703953"
  },
  {
    "story": "Oleg Misko shared Територія твого розвитку's post.",
    "created_time": "2016-06-18T08:55:45+0000",
    "id": "1272345062793233_1289698067724599"
  },
  {
    "story": "Oleg Misko shared JavaRush.RU's photo.",
    "created_time": "2016-06-07T19:58:03+0000",
    "id": "1272345062793233_1282518005109272"
  },
  {
    "story": "Oleg Misko shared a link.",
    "created_time": "2016-03-31T15:42:38+0000",
    "id": "1272345062793233_1234673696560370"
  },
  {
    "story": "Oleg Misko updated his profile picture.",
    "created_time": "2016-03-19T09:53:02+0000",
    "id": "1272345062793233_1220982634596143"
  },
  {
    "message": "posdravliayu.",
    "created_time": "2016-02-19T15:44:14+0000",
    "id": "1272345062793233_1200638139963926"
  },
  {
    "story": "Oleg Misko shared Zaxidfest's video.",
    "created_time": "2016-01-25T09:59:35+0000",
    "id": "1272345062793233_1184872831540457"
  },
  {
    "story": "Oleg Misko shared Територія твого розвитку's photo.",
    "created_time": "2016-01-14T12:35:45+0000",
    "id": "1272345062793233_1178560875504986"
  }
]

1 个答案:

答案 0 :(得分:0)

Drv,非常感谢你的回答。问题是我无法得到如何将这一系列新闻传递给我的程序。它只是给了我任何回报。

如果我这样做

Bundle params = new Bundle();
    params.putString("fields", "id,email,gender,name");
    new GraphRequest(AccessToken.getCurrentAccessToken(), "me", params, HttpMethod.GET,
            new GraphRequest.Callback() {
                @Override
                public void onCompleted(GraphResponse response) {
                    if (response != null) {
                        try {
                            JSONObject data = response.getJSONObject();
                            if (data.has("name")) {
                               nameText.setText(data.getString("name"));
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }
            }).executeAsync();

它成功返回了帐户的用户名。我怎样才能传递新闻? :(