Facebook android API函数executeGraphPathRequestAsync没有给出预期的结果

时间:2013-02-18 03:04:52

标签: android facebook facebook-graph-api

我试图通过使用FB SDK v3在Android应用程序中使用Graph API来发现用户是否喜欢特定的Facebook页面。

以下调用有效并报告用户的所有喜欢以及每个结果项目的其他详细信息。

Request.executeGraphPathRequestAsync(session, "me/likes", new Request.Callback()

由于我对任何外围设备数据都不感兴趣,我只想回到id,这样我就可以查找我感兴趣的页面,但是当我按如下方式添加参数时......

Request.executeGraphPathRequestAsync(session, "me/likes?fields=id", new Request.Callback()

...没有从通话中返回任何对象。如果我在Graph API资源管理器中发布相同的查询,则会返回预期的结果。

除了这个问题之外,是否可以将查询结果限制为仅以页面ID开头,因为我已经知道这条信息了?我没有使用返回的其余数据,并且不希望不必要地咀嚼用户带宽。我搜索了高低,似乎不可能。当试图通过用户和页面iD限制时,即使FQL浏览器也不起作用,如示例所示。在向查询添加“AND page_id = xxx”时,我得到一个空结果集。

2 个答案:

答案 0 :(得分:6)

据我所知,您无法在'executeGraphPathRequestAsync'中使用字段运行查询。 而是使用'Request'并使用'RequestAsyncTask'运行。 简短的例子:

        String grapPath = "me/home";

        Bundle params = new Bundle();
        params.putString("fields", "type,id,object_id,created_time,from,picture,likes");
        params.putString("limit", "500");

        Request request = new Request(session, grapPath, params, HttpMethod.GET, new Callback()
        {

            @Override
            public void onCompleted(Response response)
            {
                if (response != null)
                {
                    Log.d(TAG_NAME, "response: " + response.toString());
                }

            }
        });

        RequestAsyncTask task = new RequestAsyncTask(request);
        task.execute();

希望我能帮到你:)

答案 1 :(得分:-1)

Facebook SDK会将“?access_token”添加到图形路径字符串的末尾。因此,graph命令最终看起来像:

me/likes?fields=id?access_token

将字段分成一个参数包。

发现此问题已在Facebook错误帖子中解决: http://developers.facebook.com/bugs/314504765319932?browse=search_5116b87d245900257505334