3

我尝试使用 fql 查询来获取 json 响应,我使用此代码来执行此操作

   String postid=jsonObject.getString("id");

   String query = "SELECT likes.user_likes FROM stream WHERE post_id = \'" + postid + "'";

    Bundle params = new Bundle();
   params.putString("method", "fql.query");
    params.putString("query", query);

   String fqlResponse = Utility.mFacebook.request(params);

   System.out.println(fqlResponse);

但我在 Utility.mFacebook.request(params); 处收到空指针异常;

我在 Github 中使用默认类

4

1 回答 1

3

我个人觉得 Facebook Graph API 有时有点不足。例如,在您当前的需求中,如果您只需要使用 Graph API,您将需要首先获取所有喜欢特定帖子的用户的列表。获得列表后,您必须检查用户 ID 是否与登录用户的 ID 匹配,然后根据结果运行函数或其他内容。

相反,FQL 提供了更简单的功能。在我的应用程序中,对于完全相同的功能,我专门使用 FQL。

您可以触发一个简单的查询。例如:

SELECT likes.user_likes FROM stream WHERE post_id ='XXXXXXXXXXXXX_XXXXXXXXX'

将 X 替换为 Post 的 ID。确保用“YOUR_POST_ID”将帖子 ID括起来

在 Graph API Explorer 中这样尝试:fql?q=SELECT likes.user_likes FROM stream WHERE post_id = 'ENTER_YOUR_POST_ID'

运行查询后,您应该得到如下所示的结果:

{
  "data": [
    {
      "likes": {
        "user_likes": true
      }
    }
  ]
}

如果用户喜欢帖子,如果用户不喜欢帖子,则该字段user_likes将为

您可以像这样解析结果(伪代码):

if (JOLikeStatus.has("likes")) {
    JSONObject optLikes = JOLikeStatus.optJSONObject("likes");

    if (optLikes.has("user_likes")) {
        String getUserLikes = optLikes.getString("user_likes");

        if (getUserLikes.equals("true")) {
            String getLikeStatus = "true";
        } else if (getUserLikes.equals("false")) {
            String getLikeStatus = "false";
        }
    } else {
        String getLikeStatus = null;
    }
} else {
    String getLikeStatus = null;
}

编辑 2:要获得总喜欢的数量(计数),请修改前面的查询,如下所示: fql?q=SELECT likes.user_likes, likes.count FROM stream WHERE post_id = 'ENTER_YOUR_POST_ID'

于 2012-11-22T14:59:36.897 回答