如何在Android集成中查询Facebook的特定数据?

时间:2012-07-09 07:05:15

标签: android facebook-graph-api

我已将Facebook集成到我的Android应用程序中。现在我想获取仅由我的应用程序制作的特定帖子等信息。

我该怎么做?请帮忙。

编辑。

在我的应用程序中,用户可以将消息发布到他的墙上。我想要的是,如果用户的朋友也使用相同的应用程序并通过应用程序发布消息。

所以我想从他的墙上检索用户通过应用程序制作的所有消息(由他和他的朋友们制作)。

1 个答案:

答案 0 :(得分:0)

好的,我已经解决了我自己的问题。 我使用fql来检索我需要的信息。

这就是我使用fql的方式。 用于检索消息&我墙上的其他数据(只有那些是通过我的申请制作的)。

private String getWallInfo()
    {
        try
        {

            Bundle params = new Bundle();
            params.putString("method", "fql.query");
            params.putString("query", "SELECT post_id, actor_id, app_id, message FROM stream where source_id = me() and app_id = "
                    + ConnectData.APP_ID);

            String response = facebook.request(params);
            Log.i(TAG, "response = " + response);
            return response;

        } catch (MalformedURLException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        } catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }
    }

用于检索邮件&来自朋友墙的其他数据(仅限通过我的应用程序制作的数据)。

 private String getFriendsWallInfo()
        {
            try
            {

                Bundle params = new Bundle();
                params.putString("method", "fql.query");
                params.putString("query",
                        "SELECT post_id, actor_id, app_id, message FROM stream WHERE source_id IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND app_id="
                                + ConnectData.APP_ID);

                String response = facebook.request(params);
                Log.i(TAG, "response = " + response);
                return response;

            } catch (MalformedURLException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return null;
            } catch (IOException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
                return null;
            }
        }